<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            C語言

            C語言函數的遞歸調用

            時間:2025-05-17 02:46:29 C語言 我要投稿

            C語言函數的遞歸調用

              一個函數在它的函數體內調用它自身稱為遞歸調用,這種函數稱為遞歸函數。執行遞歸函數將反復調用其自身,每調用一次就進入新的一層。

            C語言函數的遞歸調用

              【示例】用遞歸計算 n!。階乘 n! 的計算公式如下:

              根據公式編程:

              long factorial(int n){

              long result;

              if(n==0 || n==1){

              result = 1;

              }else{

              result = factorial(n-1) * n; // 遞歸調用

              }

              return result;

              }

              這是一個典型的遞歸函數。調用factorial后即進入函數體,只有當 n==0 或 n==1 時函數才會執行結束,否則就一直調用它自身。

              由于每次調用的實參為 n-1,即把 n-1 的值賦給形參 n,所以每次遞歸實參的.值都減 1,直到最后 n-1 的值為 1 時再作遞歸調用,形參 n 的值也為1,遞歸就終止了,會逐層退出。

              例如求 5!,即調用factorial(5)。當進入factorial函數體后,由于 n=5,不等于0或1,所以執行result = factorial(n-1) * n;,即result = factorial(5-1) * 5;,接下來也就是調用factorial(4)。這是第一次遞歸。

              進行四次遞歸調用后,實參的值為 1,也就是調用factorial(1)。這時遞歸就結束了,開始逐層返回。factorial(1) 的值為 1,factorial(2) 的值為 1*2=2,factorial(3) 的值為 2*3=6,factorial(4) 的值為 6*4=24,最后返回值 factorial(5) 為 24*5=120。

              注意:為了防止遞歸調用無終止地進行,必須在函數內有終止遞歸調用的手段。常用的辦法是加條件判斷,滿足某種條件后就不再作遞歸調用,然后逐層返回。

              遞歸調用不但難于理解,而且開銷很大,如非必要,不推薦使用遞歸。很多遞歸調用可以用迭代(循環)來代替。

              【示例】用迭代法求 n!

              復制純文本新窗口

              long factorial(int n){

              int i;

              long result=1;

              if(n==0 || n==1){

              return 1;

              }

              for(i=1; i<=n; i++){

              result *= i;

              }

              return result;

              }

            【C語言函數的遞歸調用】相關文章:

            C語言函數的遞歸和調用08-22

            關于C語言函數的遞歸和調用09-12

            C語言函數遞歸教程09-25

            C語言函數的運用及調用10-09

            C語言遞歸函數的執行與求解08-11

            C語言函數調用與參數傳遞08-05

            匯編調用C函數10-29

            C語言中Swift函數調用實例09-25

            c語言調用函數的使用方法11-04

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看