TestDiGui.java
class="java">//通过递归计算5的阶乘 public class TestDiGui { public static void main(String[] args) { System.out.println(m(5)); //结果为120 } public static int m(int n) { if(n == 1) return 1; else return n*m(n-1); } }
方法调用图:
?
?
TestFib.java
//通过递归计算斐波那契数列 //fibnacci f1=1,f2=1,f3=2,f4=3,f5=5,...,fn=f(n-1)+f(n-2);(n>2) public class TestFib { public static void main(String[] args) { System.out.println(f(5)); //结果为5 } public static long f(int n) { if(n == 1 || n == 2){ return 1; } else { return f(n-1)+f(n-2); } } }
?递归方法调用图:
?
Fib.java
//通过非递归计算斐波那契数列 //fibnacci f1=1,f2=1,f3=2,f4=3,f5=5,...,fn=f(n-1)+f(n-2);(n>2) public class Fib { public static void main(String[] args) { System.out.println(f(5));//结果5 } public static long f(int n) { if(n == 1 || n ==2) { return 1; } long f1 = 1L; long f2 = 1L; long f = 0; for(int i=0; i < (n-2); i++) { f = f1 + f2; f1 = f2; f2 = f; } return f; } }
?