---
# System prepended metadata

title: 遞迴 心法

---

# 遞迴 心法

遞迴的三個條件：

       邊界條件
       遞迴前進段
       遞迴返回段
       當邊界條件不滿足時，遞迴前進；當邊界條件滿足時，遞迴返回。
       
      
主要寫的點， 
一定要有收斂點，
第二重新呼叫自己

先找出 base case 最終點





     使用java程式碼求5的階乘。（5的階乘=5*4*3*2*1）



```java=

* 計算5的階乘(result = 5*4*3*2*1)
* @author pplsunny
* 
* 
*/
public class Test01 {
public static void main(String[] args) {
        System.out.println(f(5));

}


public static int f(int n) {
if (1 == n)
return 1;

else
return n*f(n-1);
}


```





```java=


/** 
* 求數列：1，1，2，3，5，8......第40位的數 
* @author pplsunny 
*  
*/  
public class Test_Fibonacci {  
public static void main(String[] args) {  
    System.out.println(f(6));  
}  



public static int f(int n ) {  
if (1== n || 2 == n)   
return 1;  
else  
return f(n-1)+f(n-2);  
}  


```


```java=
//河洛塔
    public static void main(String[] args) {
     String a="A"; 
     String b="B";
     String c="C";
     
     HanoiMove(3,a,b,c);
     

    }
    
     public static void HanoiMove(int n, String a,String b,String c)   {   
        if(n == 1){
        System.out.println(a+"->"+c);
        }//else { 換成return; 就可以不用else
        
        HanoiMove(n-1,a,c,b);
        
       // HanoiMove(1,a,b,c);
        System.out.println("n :"+a+"->"+c);
        HanoiMove(n-1,b,a,c);
        
        
        
    }


```