C語言遞歸
遞歸是在自相似的方式重複項目的過程。同樣適用於編程語言以及其中,如果一個程序可以調用同一個函數被調用的函數的遞歸調用,如下函數內使用。
void recursion() { recursion(); /* function calls itself */ } int main() { recursion(); }
C語言編程語言支持遞歸,即要調用的函數本身。不過,在使用遞歸,程序員需要謹慎確定從函數的退出條件,否則會在無限循環。
遞歸函數是解決許多數學問題想計算一個數階乘非常有用的,產生斐波係列等
數字階乘
以下是一個例子,它計算階乘用於使用一個遞歸函數給定的數:
#include <stdio.h> int factorial(unsigned int i) { if(i <= 1) { return 1; } return i * factorial(i - 1); } int main() { int i = 15; printf("Factorial of %d is %d ", i, factorial(i)); return 0; }
當上述代碼被編譯和執行時,它產生了以下結果:
Factorial of 15 is 2004310016
斐波那契係列
以下是另一個例子,其給定參數產生斐波串聯使用一個遞歸的函數:
#include <stdio.h> int fibonaci(int i) { if(i == 0) { return 0; } if(i == 1) { return 1; } return fibonaci(i-1) + fibonaci(i-2); } int main() { int i; for (i = 0; i < 10; i++) { printf("%d %n", fibonaci(i)); } return 0; }
當上述代碼被編譯和執行時,它產生了以下結果:
0 1 1 2 3 5 8 13 21 34