溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C語言 之遞歸函數(shù)

發(fā)布時(shí)間:2020-06-20 13:27:51 來源:網(wǎng)絡(luò) 閱讀:468 作者:飛寞 欄目:開發(fā)技術(shù)

今天來總結(jié)一下關(guān)于遞歸函數(shù)的使用方面的問題。

  遞歸函數(shù)就是在函數(shù)使用的時(shí)候自己調(diào)用自己,層層調(diào)用,來實(shí)現(xiàn)你想要的功能。

  有兩個最常用的例子,我們來寫一下。

  (1)計(jì)算階乘

#include <stdio.h>

int factorial(int n); // 函數(shù)聲明(階乘)


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)斐波那契函數(shù)

#include <stdio.h>

int fibonacci(int n); // 函數(shù)聲明(斐波那契函數(shù))

  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的斐波那契函數(shù)值為%d",a,fibonacci(a));

    return   0;  

}  

第二個可能不太容易看明白,我們來分析一下

首先,這個假設(shè)一個數(shù)為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的時(shí)候返回一個常數(shù)很重要,要不然就會一直遞歸下去,直到觸發(fā)段錯誤。  


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI