c語言之遞迴呼叫
阿新 • • 發佈:2019-01-06
遞迴呼叫,簡而言之就是函式呼叫自身。執行遞迴函式將反覆呼叫其自身,每呼叫一次就進入新的一層。遞迴的原理比較簡單,但是想要合理並且高效的應用起來不是那麼容易,因為它的思想比較難,而且稍微控制不好,便會導致程式無限迴圈,浪費記憶體資源,直到最終全部資源被消耗掉而宕機。
先拿個最為簡單的遞迴呼叫函說明:
/**** 列印結果: ****/
/**** n = 1 ****/
/**** n = 2 ****/
#include<stdio.h>
#include<stdlib.h>
void myFunc(n)
{
if (n == 1)
{
printf ("n = %d\n" ,n);
/****return;語句很關鍵,沒有回使程式進入死迴圈****/
return;
}
myFunc(n-1);
printf ("n = %d\n",n);
}
int main(void)
{
int n = 2;
myFunc(n);
system("pause");
return 0;
}
其呼叫過程如圖:
下面用遞迴的思想來實現將十進位制數轉換為二進位制數:
/**** 結果:111000 ****/
#include<stdio.h>
#include<stdlib.h>
void myFunToBin(var )
{
int pTmp;
pTmp = var % 2;
if (var > 2)
{
myFunToBin (var / 2);
}
printf ("%d",pTmp);
}
int main(void)
{
int var = 56;
myFunToBin(var);
system("pause");
return 0;
}
函式實現的呼叫過程: