mumei2018 发表于 2023-12-13 02:22:40

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

题目是 有一对兔子,从出生后第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)方法的。

谢谢各位了

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 新人求助 这段代码有点看不懂 fibonacciSequence(int n)方法 在哪里被调用了呢