/*首先我想说的是,哥们你这代码的格式真的是乱七八糟的,连大括号的配对都有问题,
还有你想问什么问题,能不能给点清晰的东西,
丢一段代码出来,帮忙分析下为什么不行。。。着提问的方式也太敷衍了吧, 做事情要对自己负责任
*/
/*
第一个问题,你的main函数里面,大括号的配对有问题
第二个问题,你的这个递归fnn(n - 1) + fnn(n) 我是没想出来,你是想做到一个什么效果
这个程序除非传入的参数 是1 或者 2,否者他是停不下来的。下面用代码注释说明
第三个问题,递归要注意考虑你的内存问题,而且像你这样递归里面还是两次调用函数,就算是能运行也是不可取的
*/
public class TT
{
public static void main(String[] args)
{
System.out.println(fnn(3));//修改参数为3传入
}
public static int fnn(int n) //-->此处传入 3
{
if(n == 1 || n == 2) //不满足条件进入else
{
return 1;
}else
{
return fnn(n - 1) + fnn(n);
/*
主要的问题是 fnn(n),我把你前面的 fun(n-1) 去掉 就是
return fun(n);这会是个什么情况-->每次3进来 又 return fun(3);-->然后进入下一个 又是 fun(3) 又return fun(3);
这已经是一个死循环了,只有强制结束。
*/
/*return fun(n-1); 单单使用是 OK 的没有问题
不过如果这样写了,那么你传入的参数必须是大于1的数,如果传入的是负数的话那么也会进入无限循环
*/
}
}
}
为什么,复制代码还需要自己调格式,纠结
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |