求斐波拉契数列

求斐波拉契数列

迭代法

package mypack1;


public class test {

    //斐波那契数列

    //从第三项开始,每一项都等于前两项之和

    //,现在要求输入一个整数n  输出斐波那契数列的第n项


    //问题分析:
    //递归方式肯定能做出来,但是递归的重复计算会导致内存异常
    //可以使用迭代法  fn1和fn2保存计算过程中的结果,并复用
   int  Febonaqi(int number){
       if(number<=0){
           return 0;
       }
       if(number==1){
           return 1;
       }
       int first=1,second=1,third=0;
       /*迭代就是for循环*/
       for (int i = 3; i <=number ; i++) {
           //把第一个盒子的数据和第二个盒子的数据,相加之后保存在第三个盒子
          //从第一项开始每一项都等于前两项之和
           third=first+second;
          //数据是怎样加起来的,就是这样加起来的
           //第二个盒子的数据放进第一个盒子
           first=second;
           //第三个盒子的数据放进第二个盒子
           second=third;
           //这个数累计起来就比较了
       }
       return third;
   }
    public static void main(String[] args) {
        test test = new test();
        int febonaqi = test.Febonaqi(10);
        System.out.println(febonaqi);
    }
    //递归和迭代有什么区别呢
}

递归法

package mypack1;

public class test2 {
    public int febonaqi(int number){
        if(number<=0){
            return 0;
        }
        if(number==1||number==2){
            return 1;
        }
        //采用递归  递归就是一直调函数
        return febonaqi(number-2)+febonaqi(number-1);
    }

    public static void main(String[] args) {
        test2 test2 = new test2();
        int febonaqi = test2.febonaqi(10);
        System.out.println(febonaqi);
    }
}

总结:递归就是一直调函数 迭代for循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值