递归有三个基本点:
1.递归总有一个最简单的情况。即边界或者跳出递归的条件语句;
2.递归总是尝试解决一个规模更小的问题;
3.递归尝试解决的父问题和子问题之间不因该有交集;
以下是几个递归代码://斐波那契数列
import edu.princeton.cs.algs4.StdOut; public class No_1_1_19 { public static void main(String[] args) { for(int n=0;n<10;n++) { StdOut.println(n+" "+f(n)); } } public static long f(int n) { if(n==0) return 0; if(n==1) return 1; return f(n-1)+f(n-2); } }
运行结果:
用一个数组来存储斐波那契数列,并且用循环来实现;
import edu.princeton.cs.algs4.StdOut; public class No_1_1_19 { public static void main(String[] args) { int n=20; int[] a = new int[n]; a[0]=0; a[1]=1; for(int i=2;i<n;i++)//用循环来实现 { a[i] = a[i-1] + a[i-2]; } for(int i=0;i<n;i++)//输出结果 StdOut.println(i+" "+a[i]); } }
结果如下: