递归算法小结,递归小结,/* * 递归算法小结
分享于 点击 47566 次 点评:248
递归算法小结,递归小结,/* * 递归算法小结
/* * 递归算法小结 */public class DiGui_Demo { /* * f(n)= 1+2+...+n = f1(n-1) + n */ public static int f1(int n) { if(1 == n) { return 1; } else { return f1(n-1) + n; } } /* * 斐波拉契序列 1, 2, 3, 5, 8, 13, 21, 34, 55 ... * f(n) = f(n-1) + f(n-2) */ public static int f2(int n) { if(1 == n) { return 1; } else if(2 == n) { return 2; } else { return f2(n-1) + f2(n-2); } } /* * 汉诺塔 次数=2的n次方-1 */ public static void f3(int n, char A, char B, char C) { if(1 == n) { System.out.println("将编号为"+n+"的盘子直接从"+A+"柱子移到"+C); } else { f3(n-1, A, C, B); System.out.println("将编号为"+n+"的盘子直接从"+A+"柱子移到"+C); f3(n-1, B, A, C); } } /* * 题目f(n) = 1!+2!+3!...+n! * f(n) = f(n-1) + n! * f(n) = f5(n-1) + n! = f5(n-1) + f(4) = f5(n-1) + f4(n-1)*n */ public static long f5(long n) { if(1 == n) { return 1; } else { return f5(n-1) + f4(n); } } public static long f4(long n) { if( 1 == n) { return 1; } else { return n * f4(n-1); } } public static void main(String[] args) { System.out.println(f1(100));//5050 System.out.println(f2(7));//21 int n = 3;char a = 'A';char b = 'B';char c = 'C';f3(n, a, b, c);//7次 System.out.println(f5(5));//153 }}//该片段来自于http://byrx.net
用户点评