已知有一个数列:f(0) = 1,f(1) = 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 f(n + 2) - 2 * f(n + 1);
return 2*f(n - 1) + f(n - 2);
}
}
递归要有出口,这里的出口是f(0) = 1,f(1) = 4
。要注意递归是从后往前递归,最终达到出口,然后再一层层返回,所有这里要对f(n + 2) - 2 * f(n + 1)
进行数学公式变形。变成2*f(n - 1) + f(n - 2)
,这样n
的值才会逐渐缩小逼近0或者1。