递归
1.递归方法,一个方法体内调用它自身
2.方法递归包含了一种隐式的循环,他会重复执行某行代码,但这种重复无序循环控制递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似与死循环
题目
已知有一个数列:f(0) = 1,f(2) = 4,f(n+2) = 2*f(n+1) +f(n),
其中n是大于0的整数,求f(10)的值
递归
// 递归 public int f(int n) { if(n==0) { return 1; }else if (n == 1) { return 4; }else { return 2*f(n-1)+f(n-2); } }
尾递归
尾递归可以减少函数的调用的次数,避免一些重复性的运算,提高运行效率
// 尾递归 public int func(int n, int a,int b,int c) { if (c==0) { return 1; }else if (c==1) { return 4; }else { if(n==c) { # 控制循环的结束 return a+2*b; } else { return func(n, b,a+2*b,c=c+1); # 将每次循环的结果传入循环 } }