用遞歸實現n的階乘
Recursion 讀法:[rɪˈkɜ:rʃn] 遞歸
一個正整數的階乘(factorial)是所有小於及等於該數的正整數的積,並且0的階乘爲1。 自然數n的階乘寫作n!。
1808年,基斯頓·卡曼引進這個表示法。 亦即n!=1×2×3×…×n。階乘亦可以遞歸方式定義:0!=1,n!=(n-1)!×n。
package 階乘算法;
import org.omg.CORBA.PUBLIC_MEMBER;
import java.util.Scanner;
//階乘算法
public class Recursion {
public int Factorial(int num){
if (num==0 || num==1){
return 1;
}else{
return num *Factorial (num-1);
}
}
public static void main(String[] args) {
Recursion recursion = new Recursion();
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入一個整數");
int n = scanner.nextInt();
int factorial=recursion.Factorial(n);
System.out.println(factorial);
}
}
遞歸的定義和優缺點
遞歸算法是一種直接或者間接地調用自身算法的過程。在計算機編寫程序中,遞歸算法對解決一大類問題是十分有效
的,它往往使算法的描述簡潔而且易於理解。
遞歸算法解決問題的特點:
(1) 遞歸就是在過程或函數裏調用自身。
(2) 在使用遞歸策略時,必須有一個明確的遞歸結束條件,稱爲遞歸出口。
(3) 遞歸算法解題通常顯得很簡潔,但運行效率較低。所以一般不提倡用遞歸算法設計程序
(4) 在遞歸調用的過程當中系統爲每一層的返回點、局部量等開闢了棧來存儲。遞歸次數過多容易造成棧溢出等。所以一般不提倡用遞歸算法設計程序。