int fibonacciRecurs(inta1,inta2,intn) { 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
intsum = 0; int reverseNumber(intn,intsum) { if(n>= 10) { sum = sum * 10 + n % 10; return reverseNumber(n/10,sum) } sum = sum * 10 + n % 10; return sum; }
其中不断地调用自身,可以实现类似循环的功能,
递归的次数就是循环的次数
我们可以使用python简单比较一下循环和递归
1 2 3 4 5 6 7
def peach(n): peach = 1 for i in range(10-n): peach = peach * 2 +1 //这是一个计算n天后桃子总数的函数 return peach for j in range(10,0,-1): print(peach(j))
如果使用递归
1 2 3 4 5 6
def peach(n): if n == 1: return1 else: return peach(n-1) * 2 + 1 print(peach(5))