请看图,问题在图中?
上图画红线的地方,请问是什么意思,俺看不懂,先谢了。。
[此贴子已经被作者于2006-10-22 11:54:50编辑过]
----------------解决方案--------------------------------------------------------
递归
----------------解决方案--------------------------------------------------------
这是中递归算法
也就是
n=1或2是 c=1;
n=3时:c=f(3-1)+f(3-2)=f(2)+f(1)=2;
n=4: c=f(4-1)+f(4-2)=f(3)+f(2)=2+1=3;
n=5: c=f(5-1)+f(5-2)=f(4)+f(3)=3+2=5;
n=6: c=f(6-1)+f(6-2)=f(5)+f(4)=5+3=8;
n=7: c=f(6)+f(5)=8+5=13;
----------------解决方案--------------------------------------------------------
偶晕,递归,俺没学过,好难看懂啊,,
大哥们,1.有没有简单一的点递归例了了。
2. 还有就是 啥叫递归啊。。。
谢谢了。。。
[此贴子已经被作者于2006-10-22 13:01:11编辑过]
----------------解决方案--------------------------------------------------------
嘿嘿...有很多种方法...如果你觉得递归难理解的话...可以使用其它...
递归只是自身调用自身....有时使用递归....还是比较轻松简单的...
public static void main(String[] args){
System.out.println("循环不使用数组:" + finabocciLoop(7));
System.out.println("循环使用数组:" + finabocciArray(7));
System.out.println("使用递归方式:" + finabocciRec(7));
}
private static long finabocciLoop(int n){
int a = 1;
int b = 1;
int c = 0;
//c= a+b;
for(int i=2;i<n;i++){
c = a+b;
a = b;
b = c;
}
return c;
}
private static long finabocciArray(int n){
long[] finabo = new long[n];
finabo[0] =1;
finabo[1] =1;
for(int i=2;i<n;i++){
finabo[i] = finabo[i-1] + finabo[i-2];
}
return finabo[n-1];
}
private static long finabocciRec(int n){
long c;
if(n==1 || n==2)
c=1;
else
c=finabocciRec(n-1) + finabocciRec(n-2);
return c;
}
----------------解决方案--------------------------------------------------------
以下是引用purana在2006-10-22 13:31:07的发言:
嘿嘿...有很多种方法...如果你觉得递归难理解的话...可以使用其它...
递归只是自身调用自身....有时使用递归....还是比较轻松简单的...
public static void main(String[] args){
System.out.println("循环不使用数组:" + finabocciLoop(7));
System.out.println("循环使用数组:" + finabocciArray(7));
System.out.println("使用递归方式:" + finabocciRec(7));
}
private static long finabocciLoop(int n){
int a = 1;
int b = 1;
int c = 0;
//c= a+b;
for(int i=2;i<n;i++){
c = a+b;
a = b;
b = c;
}
return c;
}
private static long finabocciArray(int n){
long[] finabo = new long[n];
finabo[0] =1;
finabo[1] =1;
for(int i=2;i<n;i++){
finabo[i] = finabo[i-1] + finabo[i-2];
}
return finabo[n-1];
}
private static long finabocciRec(int n){
long c;
if(n==1 || n==2)
c=1;
else
c=finabocciRec(n-1) + finabocciRec(n-2);
return c;
}
嘿嘿...有很多种方法...如果你觉得递归难理解的话...可以使用其它...
递归只是自身调用自身....有时使用递归....还是比较轻松简单的...
public static void main(String[] args){
System.out.println("循环不使用数组:" + finabocciLoop(7));
System.out.println("循环使用数组:" + finabocciArray(7));
System.out.println("使用递归方式:" + finabocciRec(7));
}
private static long finabocciLoop(int n){
int a = 1;
int b = 1;
int c = 0;
//c= a+b;
for(int i=2;i<n;i++){
c = a+b;
a = b;
b = c;
}
return c;
}
private static long finabocciArray(int n){
long[] finabo = new long[n];
finabo[0] =1;
finabo[1] =1;
for(int i=2;i<n;i++){
finabo[i] = finabo[i-1] + finabo[i-2];
}
return finabo[n-1];
}
private static long finabocciRec(int n){
long c;
if(n==1 || n==2)
c=1;
else
c=finabocciRec(n-1) + finabocciRec(n-2);
return c;
}
不错啊,刚学就有这个水平,对你充满信心
----------------解决方案--------------------------------------------------------
呵呵...谢谢 千里冰封啊...
----------------解决方案--------------------------------------------------------