算法练习之斐波拉契数列 迭代与递归写法

public class test {
    /**
     * 构建斐波拉契数列 利用迭代
     * 1 1 2 3 5 8 13
     * 实现思路:1.新建一个数组,长度自定。
     *          2.建立for循环,从1开始,小于等于数组长度
     *          3.当i==1或者i==2时进行记录
     *          4.当i不符合3描述的条件是,把数组中存进去的数字取出来进行相加。
     * 遇到的问题: 1.刚开始没有采用数组的方式,导致不知道在哪去取那个数字,或者有固定的公式而我不知道。与i建立联系时,不能完成我的需求。
     *             2.代码第24行最后一个++arg 刚开始的写法是arg++,运行报错。本以为++arg 和 arg++ 既然用数组进行封装都会取出来值。所以,arg++这个写法实际上获得的是nums[arg] 而不是nums[arg++]
     * @param args
     */
    public static void main(String[] args) {
        int arg=0;
        int index=0;
        int count=0;
        int nums[]=new int[10];
        for(int i=1;i<=nums.length;i++){
            if(i==1||i==2){
                index=1;
            }else{
                index=nums[arg]+nums[++arg];
            }
            nums[i-1]=index;
           // count=count+index;
            System.out.println(index);

        }
        System.out.println(new test().nums(10));
    }
    //迭代写法
    private int  nums(int num){
        if(num==1){
            return num=1;
        }
        return num=nums(num-1)+num;
    }
     /*
                       num
  		f(10)		    55
  		f(9)+10         45
  		f(8)+9		    36
  		f(7)+8			28
  		f(6)+7			21
  		f(5)+6  		15
  		f(4)+5			10
  		f(3)+4 			 6
  		f(2)+3           3
  		f(1)+2           1
  		f(1)=1; f(2)=f1+2; f(3)=f(2)+3;......
   */
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值