遞歸函數

一、什么是遞歸函數

  • 遞歸函數:函數中調用了自己的函數
  • 遞歸函數不等于循環(huán)函數,
  • 遞歸典型例子:用遞歸函數計算階乘、求斐波那契數列
#include <stdio.h>
int main(void)
{
        int a=5;
        printf("%d的階乘是:%d.\n",a,jiecheng(a));
        return 0;
}
int jiecheng(int n)
{
        if(n<1)
        {
                printf("n必須大于等于1.\n");
                return -1;
        }
        if(n==1)
        {
                return 1;
        }
        else
        {
                return (n*jiecheng(n-1));
        }
}

二、函數的遞歸調用原理

  • 實際上遞歸函數是在棧內存上遞歸執(zhí)行的,每次遞歸執(zhí)行一次就會耗費一些棧內存。
  • 棧內存的大小是限制遞歸深度的重要因素。

三、使用遞歸函數的原則:收斂性、棧溢出

  • 收斂性就是:遞歸函數必須有一個終止遞歸的條件。當每次函數被執(zhí)行時,判斷一個條件決定是否繼續(xù)遞歸,這個條件最終必須能夠被滿足。如果沒有遞歸終止條件或者這個條件永遠不會被滿足,則這個遞歸沒有收斂性。
  • 因為遞歸是占用棧內存的,必須在棧內存耗盡之間結束遞歸。否則就會棧溢出。
  • 遞歸函數的使用具有一些風險,必須把握好終止條件。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容