遞歸函數 含義介紹: 遞歸函數,實際上就是將一個自定義的函數在運行過程中反覆調用他自己,直到遇到結束條件就停止 案例一:求階乘 int len(int n) { if(n == 1) { return 1;//如果階乘運算到最後一位(即1),就結束迴圈 } int sum = n*len(n-1); ...
遞歸函數
含義介紹:
遞歸函數,實際上就是將一個自定義的函數在運行過程中反覆調用他自己,直到遇到結束條件就停止
案例一:求階乘
int len(int n)
{
if(n == 1)
{
return 1;//如果階乘運算到最後一位(即1),就結束迴圈
}
int sum = n*len(n-1);//n! = (n-1)!*n
return sum;
}
void test01()
{
cout<<len(5)<<endl;
}
案例二:求斐波那契數列的第n個數
int num(int n)
{
if(n ==1||n ==0)//倒序運算到1或0時,就return n;結束迴圈
{
return n;
}
else
{
return num(n-1)+num(n-2);//n>=2時有這個式子
}
}
void test01()
{
int k;
cin>>k;
cout<<num(k)<<endl;
}
案例三:全排列
int s[5] = {0,1,2,3,4};//輸入數組
int rev(int n)
{
if (n == 5)
{
for (int i = 0; i < 5; i++)
{
cout << s[i];
}
cout << endl;
}
for (int i = n; i < 5; i++)
{
swap(s[i], s[n]);//首先確定第一個數
rev(n + 1);//依次確定第2,3......個數
swap(s[i], s[n]);//將換了位置的數據複原,以免下次交換數據時產生重覆
}
return 0;
}
void test01()
{
rev(0);
}