赞
踩
递归
题目
已知有一个数列: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); # 将每次循环的结果传入循环
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。