早教吧作业答案频道 -->其他-->
就一句Java代码读不懂请高人帮忙解释下publicstaticintf(intn){if(n==1||n==2){return1;}else{returnf(n-1)+f(n-2);}}问题怎么使用输出用递归算100-1的和我能看懂这个太绕啦2个数都是自
题目详情
就一句Java代码读不懂 请高人帮忙解释下
public static int f(int n) {
if(n==1 || n==2) {
return 1;
} else{
return f(n-1) +f(n-2);
}
}
问题怎么使用输出 用递归算100-1的和 我能看懂
这个太绕啦 2个数都是自己掉自己的方法 无限循环 怎么能输出数值啊 怎么使用 他的目的是什么
百度那个我早看啦 对我帮助不大 所以分不能给你 不好意思 但还是谢谢你
public static int f(int n) {
if(n==1 || n==2) {
return 1;
} else{
return f(n-1) +f(n-2);
}
}
问题怎么使用输出 用递归算100-1的和 我能看懂
这个太绕啦 2个数都是自己掉自己的方法 无限循环 怎么能输出数值啊 怎么使用 他的目的是什么
百度那个我早看啦 对我帮助不大 所以分不能给你 不好意思 但还是谢谢你
▼优质解答
答案和解析
public static int f(int n) { // 方法,返回值是整形,有一个参数:n
if(n==1 || n==2) { // 如果n等于1或者2就直接返回1
return 1;
} else{ // 如果不等于1或者2就把n减一,然后递归运行直到n等于1或2为止.另外一组也是同样运行.
return f(n-1) +f(n-2);
}
}
return f(n-1) +f(n-2); 这里使用了递归调用,就是说自己调用自己.从程序上看比较难看,你用断点的执行方式执行就会好看很多了.
还有就是要注意的,递归是的次数是有限制的.java默认的深度好像是1024层.如果大于这个次数,是会抛出堆栈溢出异常的.
不过这样的程序在还没有堆栈溢出之前就死了.因为CPU负荷已经满了.
试试运行f(1000)嘿嘿!
if(n==1 || n==2) { // 如果n等于1或者2就直接返回1
return 1;
} else{ // 如果不等于1或者2就把n减一,然后递归运行直到n等于1或2为止.另外一组也是同样运行.
return f(n-1) +f(n-2);
}
}
return f(n-1) +f(n-2); 这里使用了递归调用,就是说自己调用自己.从程序上看比较难看,你用断点的执行方式执行就会好看很多了.
还有就是要注意的,递归是的次数是有限制的.java默认的深度好像是1024层.如果大于这个次数,是会抛出堆栈溢出异常的.
不过这样的程序在还没有堆栈溢出之前就死了.因为CPU负荷已经满了.
试试运行f(1000)嘿嘿!
看了 就一句Java代码读不懂请高...的网友还看了以下:
大家看看这个lingo程序哪里错了啊····谢谢各位model:title first steps 2020-05-13 …
已知向量a=2向量i+向量j,向量b=(cos^2α-m)×向量i+(cosα)×向量j.已知向量 2020-05-13 …
在下表中,我们把第i行第j列的数记为ai,j(其中i,j都是不大于5的正整数),对于表中的每个数a 2020-05-14 …
如表,在5×5的表格中,用ai,j表示笫i行第i列的格子里的数(其中I,j都是不大于5的正整数), 2020-05-14 …
用matlab求最短距离时出现问题,function [D,path,min1,path1]=fl 2020-05-17 …
model:sets:yh/1,2,3/:;fq/1,2,3/:;link(yh,fq):x,d; 2020-06-12 …
求下面函数的解释,看不懂function A = fun(W)[m,n] = size(W); e 2020-06-27 …
高等数学题:设映射f:X→Y,若存在一个映射g:Y→X,使g*f=I,f*g=J,其中I,J分别是 2020-07-30 …
高等数学题:设映射f:X→Y,若存在一个映射g:Y→X,使g*f=I,f*g=J,其中I,J分别是 2020-07-30 …
用部分自然数构造如图的数表:用aij(i≥j)表示第i行第j个数(i,j∈N+),使得ai1=aii 2020-11-17 …