一旷档、什么是遞歸函數(shù)
- 遞歸函數(shù):函數(shù)中調(diào)用了自己的函數(shù)
- 遞歸函數(shù)不等于循環(huán)函數(shù)模叙,
- 遞歸典型例子:用遞歸函數(shù)計算階乘、求斐波那契數(shù)列
#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));
}
}
二鞋屈、函數(shù)的遞歸調(diào)用原理
- 實(shí)際上遞歸函數(shù)是在棧內(nèi)存上遞歸執(zhí)行的范咨,每次遞歸執(zhí)行一次就會耗費(fèi)一些棧內(nèi)存。
- 棧內(nèi)存的大小是限制遞歸深度的重要因素厂庇。
三渠啊、使用遞歸函數(shù)的原則:收斂性、棧溢出
- 收斂性就是:遞歸函數(shù)必須有一個終止遞歸的條件权旷。當(dāng)每次函數(shù)被執(zhí)行時替蛉,判斷一個條件決定是否繼續(xù)遞歸,這個條件最終必須能夠被滿足炼杖。如果沒有遞歸終止條件或者這個條件永遠(yuǎn)不會被滿足灭返,則這個遞歸沒有收斂性盗迟。
- 因為遞歸是占用棧內(nèi)存的项棠,必須在棧內(nèi)存耗盡之間結(jié)束遞歸仗岖。否則就會棧溢出。
- 遞歸函數(shù)的使用具有一些風(fēng)險,必須把握好終止條件学密。