鱼C论坛

 找回密码
 立即注册
查看: 321|回复: 1

[已解决]新人求助 这段代码有点看不懂 fibonacciSequence(int n)方法 在哪里被调用了呢

[复制链接]
发表于 2023-12-13 02:22:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目是 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长
到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

答案我看不懂

import java.util.Scanner;

public class Test01 {
        @SuppressWarnings("resource")
        public static void main(String[] args) {
                Scanner in=new Scanner(System.in);
                System.out.println("请输入月份:");
                int month=in.nextInt();

                System.out.println("第"+month+"月免子总数为"+recursive(month)*2);
        }

        public static int recursive(int n){
                if(n==1||n==2){
                        return 1;
                }else{
                        return recursive(n-1)+recursive(n-2);
                }
        }

        public static int fibonacciSequence(int n){
                if(n<0){
                        return -1;
                }
                if(n==1||n==2){
                        return 1;
                }
                int result = 0;
                int prevFirst = 1;
                int prevSecond = 1;
                for(int i=3;i<=n;i++){
                        result = prevFirst + prevSecond;
                        prevSecond = prevFirst;
                        prevFirst = result;
                }
                return result;
        }
}

流程我是懂了 兔子总数是 上月兔子数加上上上月的兔子数     main方法调取recursive(int n)方法 实现第一月和第二月兔子数 和上月兔子数加上上上月的兔子数  fibonacciSequence(int n)方法是一个循环  遍历 用于找出 当月的上月兔子数和上上月兔子数  

我不明白的就是 fibonacciSequence(int n) 方法是怎样传过来的 还有就是 我没看懂 fibonacciSequence(int n)方法在哪里被调用了  然后result又是怎样传回给recursive(int n)方法的。

谢谢各位了
最佳答案
2023-12-13 02:22:56
fibonacciSequence方法没有在这段代码中被调用。你可以在main方法中调用这个方法来获得某个月份的兔子总数。下面是修改后的代码:

import java.util.Scanner;

public class Test01 {
    @SuppressWarnings("resource")
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入月份:");
        int month = in.nextInt();

        int rabbitNumber = fibonacciSequence(month);
        System.out.println("第" + month + "月兔子总数为" + rabbitNumber);
    }

    public static int fibonacciSequence(int n) {
        if (n == 1 || n == 2) {
            return 1;
        } else {
            int a = 1;
            int b = 1;
            int sum = 0;
            for (int i = 3; i <= n; i++) {
                sum = a + b;
                a = b;
                b = sum;
            }
            return sum;
        }
    }
}

现在,fibonacciSequence方法被调用并用于计算第n个月份的兔子总数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-13 02:22:56 | 显示全部楼层    本楼为最佳答案   
fibonacciSequence方法没有在这段代码中被调用。你可以在main方法中调用这个方法来获得某个月份的兔子总数。下面是修改后的代码:

import java.util.Scanner;

public class Test01 {
    @SuppressWarnings("resource")
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入月份:");
        int month = in.nextInt();

        int rabbitNumber = fibonacciSequence(month);
        System.out.println("第" + month + "月兔子总数为" + rabbitNumber);
    }

    public static int fibonacciSequence(int n) {
        if (n == 1 || n == 2) {
            return 1;
        } else {
            int a = 1;
            int b = 1;
            int sum = 0;
            for (int i = 3; i <= n; i++) {
                sum = a + b;
                a = b;
                b = sum;
            }
            return sum;
        }
    }
}

现在,fibonacciSequence方法被调用并用于计算第n个月份的兔子总数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 02:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表