万永健


私信TA

用户名:dotcpp0696992

访问量:564

签 名:

等  级
排  名 5208
经  验 1576
参赛次数 1
文章发表 16
年  龄 19
在职情况 学生
学  校 齐鲁理工学院
专  业 计算机科学与技术

  自我简介:

解题思路:编写递归函数,在主函数中调用这个函数以便求得第n位与第n+1位的结果,将结果相除就ok啦

注意事项:double与float的区别,java中float数据在第8位进行四舍五入,因此要用double,注意递归的时间限制


参考代码:

import java.util.Scanner;

public class Main_2311 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        if (N >= 20) {//经过测试发现N>=20时保留八位小数的结果都为0.61803399,只需计算N<20的数据即可
            System.out.println(0.61803399);
        } else {
            double a = Fibonacci(N);
            double b = Fibonacci(N + 1);
            System.out.printf("%.8f",  a / b);
        }
    }
    public static double Fibonacci(int N) {
        if (N<3) return 1;
        return Fibonacci(N - 1) + Fibonacci(N - 2);
    }
}


 

0.0分

1 人评分

  评论区

  • «
  • »