零基礎入門c語言函式之遞迴函式

2021-10-24 15:02:58 字數 1006 閱讀 9337

今天來總結一下關於遞迴函式的使用方面的問題。

遞迴函式就是在函式使用的時候自己呼叫自己,層層呼叫,來實現你想要的功能。

有兩個最常用的例子,我們來寫一下。

(1)計算階乘

#include

int factorial(int n); // 函式宣告(階乘)

int main(void)

int a = 5;

printf("%d的階乘是:%d.\n", a, factorial(a));

return 0;

int factorial(int n)

if (n < 1)

printf(「error.\n」);

return -1;

if (n == 1)

return 1;

else

return (n * factorial(n-1));

(2)斐波那契函式

#include

int fibonacci(int n); // 函式宣告(斐波那契函式)

int fibonacci(int n)

if (n == 0) return 0;

if (n == 1) return 1;

return fibonacci(n - 1) + fibonacci(n - 2);

int main(void)

int a;

printf("%d的斐波那契函式值為%d",a,fibonacci(a));

return 0;

第二個可能不太容易看明白,我們來分析一下

首先,這個假設乙個數為n ,

第一次遞迴,f(n)=f(n-1)+f(n-2)

第二次遞迴分為兩個部分,

f(n-1)=f(n-2)+f(n-3) f(n-2)=f(n-3)+f(n-4)

第三次遞迴分為四個部分……一直遞迴到0和1為止。

所以n0或者n1的時候返回乙個常數很重要,要不然就會一直遞迴下去,直到觸發段錯誤。

[

Python零基礎入門之函式

函式的命名空間和作用域 函式的三類命名空間 內建 全域性 區域性 兩大作用域 全域性 內建和全域性命名空間都屬於全域性作用域 區域性 區域性命名空間屬於區域性作用域 什麼是作用域鏈?就是由外而內的命名空間中的中的變數的生存週期都是就近原則 全域性作用域 大區域性作用域 小區域性作用域 函式的兩大引數...

Python零基礎入門之函式閉包

函式的global 全域性變數 包含內建和全域性命名空間的所有全域性作用域資料 只有在區域性中宣告了全域性變數 這樣在區域性進行的修改同樣作用於全域性 nonlocal 對於全域性變數無效 只作用於就近一層的區域性變數 globals 返回是全域性中的內容 locals 返回的是本地的內容 本地是全...

Python零基礎入門 基礎(七) 函式

函式是指將一組語句的集合通過乙個名字 函式名 封裝起來,要想執行這個函式,只需呼叫其函式名即可。特性 減少重複 使程式變的可擴充套件 使程式變得易維護 def calc x,y 函式名 res x y return res 返回函式執行結果 c calc a,b 呼叫函式,結果賦值給c變數 prin...