java吧 关注:1,247,947贴子:12,729,466

各位大神,帮忙解答一下这道JAVA题,谢谢

只看楼主收藏回复


int等于1和2的时候,执行return1;
而int在3到10之间时,执行return fun(n-1)+ (n-2);
为什么这样想,得到结果不对呢。
哪里不对,各位指教一下,谢谢。


IP属地:海南1楼2018-03-01 08:28回复
    多喝六个核桃


    IP属地:北京来自Android客户端2楼2018-03-01 08:39
    回复
      你没有累加 加一个for循环咋int n = 10;后


      3楼2018-03-01 08:41
      回复
        看不懂这是什么算法!


        IP属地:上海来自Android客户端4楼2018-03-01 08:41
        收起回复
          你这个得到的就是斐波那契数列
          至于你说结果不对,可能只是多一项少一项的问题吧
          不给题目就问程序怎么不对都是耍流氓


          IP属地:浙江5楼2018-03-01 08:49
          收起回复
            题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....


            IP属地:海南6楼2018-03-01 08:51
            回复
              这不就是递归吗


              8楼2018-03-01 09:30
              回复
                结果哪里不对?


                IP属地:浙江来自Android客户端9楼2018-03-01 09:31
                收起回复
                  首先 如果你是要第10次的数量 55是对的
                  然后 如果你是要第1次,第2次...第10次 就不要写int=10 改成for循环 还有 别人帮助你解决问题 你这样态度很不友好


                  IP属地:湖北10楼2018-03-01 09:51
                  收起回复
                    public class T2 {
                    public static void main(String[] args) {
                    int n=10;
                    for (int i = 1; i <=n; i++) {
                    System.out.println(i +"---"+fun(i));
                    }
                    }
                    public static int fun(int n) {
                    if(n==1 ||n==2) {
                    return 1;
                    }else {
                    return fun(n-1)+fun(n-2);
                    }
                    }
                    }


                    IP属地:上海11楼2018-03-01 10:14
                    回复
                      这是递归


                      IP属地:浙江来自Android客户端12楼2018-03-01 10:28
                      回复
                        没有累加,所以结果不一样


                        IP属地:四川来自Android客户端13楼2018-03-01 10:38
                        回复
                          先去了解一下什么是递归吧。对你很有用的


                          来自Android客户端15楼2018-03-01 22:51
                          回复
                            你最后一行的需要n需要3~10 第二个return中的n 默认为内部变量中的n不能调用外部类中的10


                            IP属地:四川来自手机贴吧16楼2018-03-01 23:11
                            回复
                              程序是对的,没有错误。至于原理属于数学问题,这是因为从第三个开始的总兔子数量
                              f(n)=现在已经有的老兔子f(n-1)+这个月初新出生的兔子(即两个月前存在的兔子数)即f(n-2)。从始至终f(n)代表的都是当月兔子总数。明白了吗?程序是没有问题的。


                              IP属地:山东来自iPhone客户端18楼2018-03-02 19:38
                              收起回复