您好,登錄后才能下訂單哦!
今天來總結一下關于遞歸函數的使用方面的問題。
遞歸函數就是在函數使用的時候自己調用自己,層層調用,來實現你想要的功能。
有兩個最常用的例子,我們來寫一下。
(1)計算階乘
#include <stdio.h>
int factorial(int n); // 函數聲明(階乘)
int main(void)
{
int a = 5;
printf("%d的階乘是:%d.\n", a, factorial(a));
return 0;
}
int factorial(int n)
{
if (n < 1)
{
printf("error.\n");
return -1;
}
if (n == 1)
{
return 1;
}
else
{
return (n * factorial(n-1));
}
}
(2)斐波那契函數
#include <stdio.h>
int fibonacci(int n); // 函數聲明(斐波那契函數)
int fibonacci(int n)
{
if (n == 0) return 0;
if (n == 1) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
int main(void)
{
int a;
printf("%d的斐波那契函數值為%d",a,fibonacci(a));
return 0;
}
第二個可能不太容易看明白,我們來分析一下
首先,這個假設一個數為n ,
第一次遞歸,f(n)=f(n-1)+f(n-2)
第二次遞歸分為兩個部分,
f(n-1)=f(n-2)+f(n-3) f(n-2)=f(n-3)+f(n-4)
第三次遞歸分為四個部分……一直遞歸到0和1為止。
所以n==0或者n==1的時候返回一個常數很重要,要不然就會一直遞歸下去,直到觸發段錯誤。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。