C 語(yǔ)言基礎(chǔ)教程

C 語(yǔ)言流程控制

C 語(yǔ)言函數(shù)

C 語(yǔ)言數(shù)組

C 語(yǔ)言指針

C 語(yǔ)言字符串

C 語(yǔ)言結(jié)構(gòu)體

C 語(yǔ)言文件

C 其他

C 語(yǔ)言參考手冊(cè)

C 語(yǔ)言遞歸

在本教程中,您將借助示例學(xué)習(xí)使用C語(yǔ)言編程編寫(xiě)遞歸函數(shù)。

調(diào)用自身的函數(shù)稱(chēng)為遞歸函數(shù)。并且,這種技術(shù)稱(chēng)為遞歸。

遞歸如何工作?

void recurse()
{
    ... .. ...
    recurse();
    ... .. ...
}

int main()
{
    ... .. ...
    recurse();
    ... .. ...
}

遞歸在C語(yǔ)言編程中如何工作?

遞歸繼續(xù)進(jìn)行,直到滿(mǎn)足某些條件以防止遞歸為止。

為了防止無(wú)限遞歸,可以在一個(gè)分支進(jìn)行遞歸調(diào)用,而其他分支不進(jìn)行遞歸調(diào)用的情況下使用if ... else語(yǔ)句(或類(lèi)似方法)。

示例:使用遞歸的自然數(shù)之和

#include <stdio.h>
int sum(int n);

int main() {
    int number, result;

    printf("請(qǐng)輸入一個(gè)正整數(shù): ");
    scanf("%d", &number);

    result = sum(number);

    printf("sum = %d", result);
    return 0;
}

int sum(int n) {
    if (n != 0)
        //sum()函數(shù)調(diào)用自身
        return n + sum(n-1); 
    else
        return n;
}

輸出結(jié)果

請(qǐng)輸入一個(gè)正整數(shù):3
sum = 6

最初,從main()函數(shù)調(diào)用sum(),并將number作為參數(shù)傳遞。

假設(shè)sum()中的n初始值為3。 在下一個(gè)函數(shù)調(diào)用期間,將2傳遞給sum()函數(shù)。 此過(guò)程一直持續(xù)到n等于0。

當(dāng)n等于0時(shí),if條件失敗,執(zhí)行else部分,最終將整數(shù)和返回給main()函數(shù)。

使用遞歸計(jì)算自然數(shù)之和

遞歸的優(yōu)缺點(diǎn)

遞歸使程序優(yōu)雅。但是,如果性能至關(guān)重要,請(qǐng)使用循環(huán)代替,因?yàn)檫f歸通常要慢得多。

話(huà)雖如此,遞歸是一個(gè)重要的概念。它經(jīng)常用于數(shù)據(jù)結(jié)構(gòu)和算法中。例如,在諸如樹(shù)遍歷之類(lèi)的問(wèn)題中通常使用遞歸。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清