斐波那契数列——java实现

 斐波那契数列:指的是这样的数列:0,1,1,2,3,5,8,21,34..., 这个数列从第三项开始,每一项都等于前两项之和。

案例代码:

/**
 * 递归求解斐波那契数列
 * 步骤解释:
 * n=5 foo(4)+foo(3)
 * =foo(3)+foo(2)+foo(2)+1
 * =3foo(2) +1+1
 * =3+2
 * =5
 *
 * @param n
 * @return
 */
private static Integer foo(int n) {
    if (n < 2)
        return n;
    return foo(n - 1) + foo(n - 2);
}

 循环、递归代码实现斐波那契数列

package top.chenxiky.courseware.sort;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: chenxiky
 * @Date: 2022/03/11/13:28
 * @Description: 斐波那契数列
 * 斐波那契数列:指的是这样的数列:0,1,1,2,3,5,8,21,34...,
 * 这个数列从第三项开始,每一项都等于前两项之和
 */
public class FibonacciLoop {
    public static void main(String[] args) {
        // 笔试题
        System.out.println("答案:" + foo(5));
        // 循环实现斐波那契数列
        fibonacci_loop(5);
        // 打印空行
        System.out.println();
        // 递归实现斐波那契数列
        fibonacci_recursion(1);
    }

    /**
     * 递归求解斐波那契数列
     * 步骤解释:
     * n=5 foo(4)+foo(3)
     * =foo(3)+foo(2)+foo(2)+1
     * =3foo(2) +1+1
     * =3+2
     * =5
     *
     * @param n
     * @return
     */
    private static Integer foo(int n) {
        if (n < 2)
            return n;
        return foo(n - 1) + foo(n - 2);
    }

    /**
     * 用循环实现斐波那契数列
     *
     * @return
     */
    public static void fibonacci_loop(int num) {

        // num如果小于1直接结束该方法
        if (num < 1) {
            return;
        }
        // 设置一个变量输出数据的个数
        int n = 0;
        // 初始化第一个数
        int a = 0;
        // 初始化第二个数
        int b = 1;
        // 第三个数 斐波那契数列第一项等于前两项之和(初始化为0)
        int c = 0;

        // do while至少循环一次
        do {
            n++;
            if (n == 1) {
                System.out.print("循环实现:" + 0 + "\t");
                System.out.print(1 + "\t");
            }
            // 第三个数是前两个数之和
            c = a + b;
            System.out.print(c + "\t");
            // 原来的第一个数变为第二个数
            a = b;
            // 原来的第二个数变为第三个数
            b = c;
        } while (n < num);
        return;
    }


    /**
     * 递归实现斐波那契数列
     *
     * @param num
     */
    public static void fibonacci_recursion(int num) {
        // 边界值判断
        if (num < 1) {
            return;
        }
        // 调用递归方法
        fibonacci_recursion_handler(1, num, 0, 1);

    }

    /**
     * 在私有的方法里递归调用
     *
     * @param index // 数据的序号
     * @param num   //  数列数据的个数
     * @param one   //   第一个数
     * @param two   //    第二个数
     */
    private static void fibonacci_recursion_handler(int index, int num, int one, int two) {

        // 程序的出口
        if (index <= num) {
            if (index == 1) {
                System.out.print("递归实现:" + one + "\t");
                System.out.print(two + "\t");
            }
            // 第三个数是前两个数之和
            System.out.print(one + two + "\t");
            // 递归 原来的第一个数变成第er个数 原来的第二个数变成第三个数
            fibonacci_recursion_handler(++index, num, two, one + two);
        }


//        // 程序的出口
//        if (index > num) {
//            // 终止递归
//            return;
//        } else {
//            if (index == 1) {
//                System.out.println(0);
//                System.out.println(1);
//            }
//            // 第三个数是前两个数之和
//            System.out.println(one + two);
//            // 原来的第一个数变成第er个数 原来的第二个数变成第三个数
//            fibonacci_recursion_handler(++index, num, two, one + two);
//        }

    }

}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用数组循环、递归和递归方法实现斐波那契数列的完整代码: 使用数组循环: ```java public class test4 { public static void main(String[] args) { int[] arr = new int = 1; arr = 1; for (int i = 2; i < arr.length; i++) { arr[i = arr[i - 1 + arr[i - 2]; } String s = Arrays.toString(arr); System.out.println("前十个斐波那契数是:" + s); } } ``` 使用递归方法: ```java public class Demo2 { private static int getFibo(int i) { if (i == 1 || i == 2) return 1; else return getFibo(i - 1) + getFibo(i - 2); } public static void main(String[] args) { System.out.println("斐波那契数列的前20项为:"); for (int j = 1; j <= 20; j++) { System.out.print(getFibo(j) + "\t"); if (j % 5 == 0) System.out.println(); } } } ``` 使用递归的方法: ```java public class test2 { public static void main(String[] args) { for (int counter = 1; counter <= 10; counter++) { System.out.printf("Fibonacci of %d is: %d\n", counter, fibonacci(counter)); } } public static long fibonacci(long number) { if ((number == 0) || (number == 1)) return number; else return fibonacci(number - 1) + fibonacci(number - 2); } } ``` 请注意,以上代码是完整的斐波那契数列实现。不同的代码使用了不同的方法来计算斐波那契数列,你可以根据自己的需要选择其中一个方法来使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [斐波那契数列java代码实现](https://blog.csdn.net/weixin_48720080/article/details/120212504)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [斐波那契数列——java代码实现](https://blog.csdn.net/lb812913059/article/details/83313893)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值