请教递归调用出现堆栈溢出异常的处理。 return (value(n-1)+value(n-2)); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 value(value(n-1)+value(n-2))你这不是越加越多吗?怎么能跳出递归? 假设为n为3,则计算VALUE(VALUE(1)+VALUE(2)) =value(1) = 0;value 4 = value(value 3 + value 2) = value (0 + 1) = value (1) = 0;value 5 = (value (4) + value (3)) = value (0)。所有>=5的数据都会产生这个问题.当求VALUE(0)的时候,没有任何处理,此时将陷入无限低归的情况,所以,你的代码有问题,堆栈益处是正常的。 return (value(n-1)+value(n-2));求非波那切数列对吧 public class Test{ static int i; static int value(int n){ if(n==1) return i=0; if(n==2) return i=1; if(n>2) return i=value(value(n-1)+value(n-2)); return i;} public static void main(String[] args){ try{ System.out.println(value(5)); }catch(Exception e){ System.out.println("error..."); } }} value(5) / \ value(4) + value(3) / \ / \ value(3) + value(2) + value(2)+ value(1) / \ 返回1 返回1 返回0 value(2)+value(1) 返回1 返回0muroachanf(菜鸟中的霸王),这不是不会遇到value(0)的情况吗?而且这不是可以递归结束的吗?我还是不懂了! To lostboy7931(小白) : value(5) / \ value(4) + value(3) / \ / \ value(3) + value(2) + value(2)+ value(1) / \ 返回1 返回1 返回0 value(2)+value(1) 返回1 返回0你用这种方法当然不会返回0了,程序是return (value(n-1)+value(n-2));不是你写的return value(value(n-1)+value(n-2));啊再看看吧 关于JMF里面setMediaTime()的几个问题 求助:JApplet,JFrame,JPane的问题。 2种事件的区别? 请教各路好人 求救ORCALCE问题 一个比较弱的问题。大家来帮忙哦。 Class.forName的作用?为什么要用?Jdo是什么?有什么用? Please Help ME !!! Thanks 郁闷,我为何装了j2sdk1.4.0之后,application 程序可以运行,但是为何就是没有java console ,而且在运行java applet 时只有框架,没有内容, 麻烦大家进来看看 异常类问题 关于调用方法的一个怪问题(在线等)
value 4 = value(value 3 + value 2) = value (0 + 1) = value (1) = 0;value 5 = (value (4) + value (3)) = value (0)。所有>=5的数据都会产生这个问题.
当求VALUE(0)的时候,没有任何处理,此时将陷入无限低归的情况,所以,你的代码有问题,堆栈益处是正常的。
求非波那切数列对吧
{
static int i;
static int value(int n){
if(n==1) return i=0;
if(n==2) return i=1;
if(n>2) return i=value(value(n-1)+value(n-2));
return i;
}
public static void main(String[] args){
try{
System.out.println(value(5));
}catch(Exception e){
System.out.println("error...");
}
}
}
/ \
value(4) + value(3)
/ \ / \
value(3) + value(2) + value(2)+ value(1)
/ \ 返回1 返回1 返回0
value(2)+value(1)
返回1 返回0
muroachanf(菜鸟中的霸王),这不是不会遇到value(0)的情况吗?
而且这不是可以递归结束的吗?
我还是不懂了!
value(5)
/ \
value(4) + value(3)
/ \ / \
value(3) + value(2) + value(2)+ value(1)
/ \ 返回1 返回1 返回0
value(2)+value(1)
返回1 返回0
你用这种方法当然不会返回0了,程序是return (value(n-1)+value(n-2));
不是你写的return value(value(n-1)+value(n-2));啊
再看看吧