一,遞歸的概念及其作用
程序調用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種算法在程序設計語言中廣泛應用。 一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算,大大地減少了程序的代碼量。遞歸的能力在於用有限的語句來定義對象的無限集合。一般來說,遞歸需要有邊界條件、遞歸前進段和遞歸返回段。當邊界條件不滿足時,遞歸前進;當邊界條件滿足時,遞歸返回。
實現n!與斐波那契額數列有很多種方法,在此為了介紹遞歸方法,所以以此為例,使用遞歸實現二進制轉換。下面給出遞歸轉換二進制的代碼(給出詳細注釋)此處不再做詳細解釋。
二,遞歸實現n!
#include<stdio.h> //遞歸函數實現 int Fact(int n) { if(n==0) { //當n==0時返回1.即0!=1 return 1; } else { return n*Fact(n-1);//遞歸公式 } } int main() //主函數 { int n,sum; scanf("%d",&n); //輸入 sum=Fact(n); printf("%d",sum); //輸出 return 0; }
三,n!數組實現代碼(不再過多解釋)
#include<stdio.h> int main() { int n; scanf("%d",&n); int t=n,fact=1; //當n==0時fact=1 while(n>1) { fact*=n--; } printf("%d\n",fact); return 0; }