函数递归
- 局部函数变量的特性自成体系,作为调用函数自身
- 递归函数不依靠任何外部资源,自成体系的迭代到基准值
return:返回特定的退出状态码,在函数结束时
- #! /bin/bash
- # using recursion
- # 计算阶乘,formula:x!=x*(x-1)!, 使用递归函数得到(x-1)!
- function factorial {
- # 递归边界,根据1的阶乘是1
- if [ $1 -eq 1 ]; then
- echo 1
- else
- local temp=$[ $1 -1 ]
- # 接收函数的输出,并将返回值传递给result
- local result=$(factorial $temp)
- echo $[ $result * $1 ]
- fi
- }
- read -p "Enter value: " value
- # result与自成体系的递归函数不同, local局部变量
- result=$(factorial $value)
- echo "The factorial of $value is : $result"
复制代码- ///: C:计算阶乘
- // 递归公式推导: m*(m-1)!
- #include <stdio.h>
- long fact(int num) {
- long result,args;
- if(num==1) {
- // 设置边界条件,底层回溯值
- return 1;
- } else {
- args = num - 1;
- result = fact(args);
- return num * result;
- }
- }
- int main(void) {
- int num, result;
- printf("请输入一个要计算的阶乘数: ");
- scanf("%d",&num);
- result = fact(num);
- printf("这个数的阶乘是: %d", result);
- }
复制代码 [code]// 通过逻辑与的短路特性作为简单if-else// 计算 1+2+...+9+10#include using namespace std;int add(int c);int main(){ add(10); return 0;}int add(int c) { int a = 0; c && (a=add(c-1)); //函数自递归 底层调用return的另一种方式:终止函数 cout |