题目描述
Fibonacci 数列是非常著名的数列:
F[1] = 1,
F[2] = 1,
对于 i > 3,F[i] = F[i − 1] + F[i − 2]
Fibonacci 数列有一个特殊的性质,前一项与后一项的比值,F[i]/F[i + 1], 会趋近于黄金分割。
为了验证这一性质,给定正整数 N,请你计算 F[N]/F[N + 1],并保留 8 位 小数。
输入
一个正整数 N。(1 ≤ N ≤ 2000000000)
输出
F[N]/F[N + 1]。答案保留 8 位小数。
样例输入
2
样例输出
0.50000000
思路
先看代码,思路后补。
这个放到c语言网上的运行不是100%,因该是出问题了
代码如下
import java.util.Scanner;
/**
* @author hf
*
*/
public class Cyyw2311 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double n = sc.nextInt();
if (n <= 21) {
double x = f(n);
double y = f(n)+f(n-1);
double ratio =(double)(x/y);
System.out.println(String.format("%.8f", ratio));
}else {
System.out.println(0.61803399);
}
}
public static double f(double n) {
if (n == 1 || n == 2) {
return 1;
}
return f(n-1)+f(n-2);
}
}