1. 程式人生 > >c語言之遞迴呼叫

c語言之遞迴呼叫

遞迴呼叫,簡而言之就是函式呼叫自身。執行遞迴函式將反覆呼叫其自身,每呼叫一次就進入新的一層。遞迴的原理比較簡單,但是想要合理並且高效的應用起來不是那麼容易,因為它的思想比較難,而且稍微控制不好,便會導致程式無限迴圈,浪費記憶體資源,直到最終全部資源被消耗掉而宕機。

先拿個最為簡單的遞迴呼叫函說明:

/**** 列印結果: ****/
/**** 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; }

函式實現的呼叫過程:
這裡寫圖片描述