斐波那契数列
package cn.wangbingan.vip;import java.util.Scanner;/** * 斐波那契数列 * * @author AK * */public class Fibonacci { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Please input this fibonacci n:"); int n = scanner.nextInt(); // 假设输入为大于零的整数 System.out.println("递归实现方式当前值:" + fibonacci(n) + "\n" + "递推实现方式当前值:" + fibonacciNormal(n));// 第n项的值 int sum1 = 0; int sum2 = 0; for (int i = 1; i <= n; i++) { sum1 += fibonacci(i); } for (int j = 1; j <= n; j++) { sum2 += fibonacciNormal(j); } System.out.println("递归实现方式:" + sum1 + "\n递推实现方式:" + sum2); } // 递归实现方式 public static int fibonacci(int n) { if (n <= 2) { return 1; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } // 递推实现方式 public static int fibonacciNormal(int n) { if (n <= 2) { return 1; } int n1 = 1, n2 = 1, sn = 0; for (int i = 0; i < n - 2; i++) { sn = n1 + n2; n1 = n2; n2 = sn; } return sn; }}
输出结果:
Please input this fibonacci n:
6
递归实现方式当前值:8
递推实现方式当前值:8
递归实现方式:20
递推实现方式:20
科普一下:递归算法就是程序的自身调用,但是好像不怎么建议使用,只是小程序使用罢了。还可以解决阶乘,汉诺塔等问题。