【算法】java利用循环和递归实现斐波那契数列

斐波那契数列样例:1,1,2,3,5,8……

特征:第一个和第二个数值都为1,从第三个数值起,每个数值的计算规律都是当前数值的上一个数值+上两个数值。例如上面例子中的第三个数值为2=1+1,第四个数值为3=2+1,第五个数值为5=3+2.以此类推。利用代码实现求第N个数值。

方法一:使用for循环实现

变量步骤解析

循环次数int oneint twonum
第一次--1
第二次--1
第三次112
第四次123
第五次235
第六次358

从第三次开始,每一次的变量one都是上两次的num 变量two都是上一次的num。

 //使用循环
    //k=求第几个数值
    public static int f1(int k) {
        int num = 0;//记录第K个数值
        int one = 1;//第一个数值
        int two = 1;//第二个数值

        if (k == 1 || k == 2) {//如果K=1或2,则表示计算第一个和第二个数值,斐波那契数列特征都是从1开始计算,直接返回1。
            return 1;
        }
        for (int i = 3; i <= k; i++)//从第三个开始,循环到K个数值结束
        {
            num = +one + two;//例如从第三个数值开始,则等于第一个数值+第二个数值的和
            one = two;//计算完第三个数值后,需要将目前的第一个数值变量更换为第二个,
            two = num;//第二个数值变量更换为num也就是第三个数值,
            //接着从头循环开始计算第四个数值
        }
        return num;//返回最终计算结果
    }

方法二:使用递归实现


    //使用递归
    //i=求第几个数值
    public static int f(int i) {
        if (i == 1 || i == 2) {//如果i=1或2,则表示计算第一个和第二个数值,直接返回1。
            return 1;//递归出口
        }
        //否则递归调用当前方法,例如i=3 求第三个数值的话 就等于 第二个数值f(3-1)加上第一个数值f(3-2)的和
        return f(i - 1) + f(i - 2);
    }

 测试demo:

public static void main(String[] args) {
        //斐波那契数列 1,1,2,3,5,8……
        System.out.println(f1(10));//调用循环
        System.out.println(f(10));//调用递归
    }

结果:

55
55

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值