实现:
1) 分苹果,每次分一半(苹果个数为奇数时舍弃一个),至少多少次分完
2) 阶乘
3) 斐波那契数列
public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { int n = sc.nextInt(); int count = half(n); System.out.println("at least: " + count); System.out.println("factorial: " + factorial(n)); System.out.println("fibonacci: " + fibonacci(n)); } } // 分苹果 public static int half(int n) { if (n == 2 || n == 3) return 1; else if (n % 2 == 0) return 1 + half(n / 2); else return 1 + half((n - 1) / 2); } // 阶乘 public static long factorial(long n) { if (n == 1) return 1; else return n * factorial(n - 1); } // 斐波那契数列 public static int fibonacci(int n) { switch (n) { case 0: return 0; case 1: return 1; default: return fibonacci(n - 1) + fibonacci(n - 2); } }
心得:
1. 找出规律得出方程
f(x)=1+f(x/2);f(x)=x*f(x-1);f(x)=f(x-1)+f(x-2)
2. 明确退出条件
3. 返回方程
浙公网安备 33010602011771号