题目描述
这是一个有趣的古典数学问题,著名意大利数学家Fibonacci曾提出一个问题:有一对小兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。按此规律,假设没有兔子死亡,第一个月有一对刚出生的小兔子,问第n个月有多少对兔子?
输入
输入月数n(1<=n<=44)。
输出
输出第n个月有多少对兔子。
样例输入
3
样例输出
2
先调到java再提交
极优雅的数学写法(移步斐波那契数列_百度百科 (baidu.com))
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
System.out.printf("%.0f",(1 / Math.sqrt(5)) * (Math.pow(((1 + Math.sqrt(5)) / 2),n) - Math.pow(((1 - Math.sqrt(5)) / 2),n)));
}
}
斐波那契数列通项公式:
次优雅的递归写法
import java.util.*;
public class Main{
public static int Fibonacci(int n) {
return (n == 1 || n == 2) ? 1 : (Fibonacci(n - 1) + Fibonacci(n - 2));
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
System.out.printf("%d",Fibonacci(n));
}
}
java里函数编辑
public static 返回值类型 函数名(参数类型1 参数1,参数类型2 参数2,·····){
}