日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言函数的递归

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言函数的递归 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、遞歸函數的定義
  • 二、函數調用機制說明
  • 三、遞歸調用的形式

一、遞歸函數的定義

所謂遞歸函數是指一個函數的函數體中直接調用或間接調用了該函數自身的函數。

遞歸函數調用的執行過程分為兩個階段。
遞推階段:從原問題出發,按遞歸公式遞推從未知到已知,最終達到遞歸終止條件。
回歸階段:按遞歸終止條件求出結果,逆向逐步代入遞歸公式,回歸到原問題求解。
示例程序如下:

#include<stdio.h> double factorial(int n); int main() {double r;r=factorial(5);printf("5!=%lf\n",r);return 0; }double factorial(int n) {if(n<=1)return 1;return(n*factorial(n-1)); }

程序執行結果如下:

5!=120.000000

該程序實現了n!,已知0!或1!是1。遞歸規律是:n!=n×(n-1)!。

二、函數調用機制說明

任何函數之間不能嵌套定義,調用函數與被調用函數之間相互獨立(彼此可以調用)。發生函數調用時,被調函數中保護了調用函數的運行環境和返回地址,使得調用函數的狀態可以在被調函數運行返回后完全恢復,而且該狀態與被調函數無關。

被調函數運行的代碼雖是同一個函數的代碼體,但由于調用點,調用時狀態,返回點的不同,可以看作是函數的一個副本,與調用函數的代碼無關,所以函數的代碼是獨立的。被調函數運行的棧空間獨立于調用函數的棧空間,所以與調用函數之間的數據也是無關的。函數之間靠參數傳遞和返回值來聯系,函數看作為黑盒。

三、遞歸調用的形式

遞歸調用有直接遞歸調用和間接遞歸調用兩種形式。
直接遞歸即在函數中出現調用函數本身。

void a() (a();/*函數a中調用函數a,直接遞歸*/ }

而其他函數又調用了本函數,這一過程稱間接遞歸。

void a() (b();/*函數a中調用函數b*/} void b() (a();/*函數b中調用函數a-間接遞歸*/ )

總結

以上是生活随笔為你收集整理的C语言函数的递归的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。