當(dāng)在一個函數(shù)中調(diào)用同一個函數(shù)(自身)時,它在C語言中被稱為遞歸。調(diào)用相同函數(shù)的函數(shù)稱為遞歸函數(shù)。
一個調(diào)用自身,并且在函數(shù)調(diào)用后不執(zhí)行任務(wù)的函數(shù)被稱為尾遞歸。 在尾遞歸中,我們通常使用return語句調(diào)用相同的函數(shù)。下面給出了一個尾遞歸遞歸的例子。
recursionfunction(){
recursionfunction();// 函數(shù)名稱一樣,自身調(diào)用自身函數(shù)
}
我們來看一個使用C語言中的尾遞歸打印因子數(shù)的例子。首先創(chuàng)建一個名稱為:recursion的工程,在這個工程下創(chuàng)建一個源文件:recursion-example.c,其代碼如下 -
#include<stdio.h>
int factorial(int n)
{
if (n < 0)
return -1; /*Wrong value*/
if (n == 0)
return 1; /*Terminating condition*/
return (n * factorial(n - 1));
}
void main() {
int fact = 0;
fact = factorial(5);
printf("\n factorial of 5 is %d \n", fact);
}
執(zhí)行上面代碼,得到以下結(jié)果 -
factorial of 5 is 120
我們可以通過下面的圖形來理解上述遞歸方法調(diào)用的程序:
