intfibonacciRecurs(int a1,int a2,int n) { if(n == 1 || n == 2) { return a1; } int an = fibonacciRecurs(a1,a2,n-1) +fibonacciRecurs(a1,a2,n-2); return an; }
由于递归过程中每次函数内部的变量都会被重新初始化,因此可以考虑多传入参数
下面是求反转数字的例子
1 2 3 4 5 6 7 8 9 10 11
int sum = 0; intreverseNumber(int n,int sum) { if(n>= 10) { sum = sum * 10 + n % 10; returnreverseNumber(n/10,sum) } sum = sum * 10 + n % 10; return sum; }
其中不断地调用自身,可以实现类似循环的功能,
递归的次数就是循环的次数
我们可以使用python简单比较一下循环和递归
1 2 3 4 5 6 7
defpeach(n): peach = 1 for i inrange(10-n): peach = peach * 2 +1 //这是一个计算n天后桃子总数的函数 return peach for j inrange(10,0,-1): print(peach(j))
如果使用递归
1 2 3 4 5 6
defpeach(n): if n == 1: return1 else: return peach(n-1) * 2 + 1 print(peach(5))