9.3 函數(shù) :遞歸和倒序計算

[題目]以二進(jìn)制形式打印十進(jìn)制整數(shù)(除2取余、逆序輸出)
[遞歸]
在遞歸程序中,起初一直沒有明白為什么是直接輸出,自己理解成需要建立一個數(shù)組將取余后的結(jié)果保存,然后逆序輸出,但是其實(shí)這樣就是完全理解錯誤了遞歸算法。
遞歸最重要的一點(diǎn)就是倒序輸出!
舉個例子:假設(shè)有一條函數(shù)調(diào)用鏈---recursion1()調(diào)用recursion2()、recursion2()調(diào)用recursion3()、recursion3()調(diào)用recursion4()。當(dāng)recursion4()執(zhí)行結(jié)束(條件不滿足繼續(xù)調(diào)用)時,控制轉(zhuǎn)回recursion3();當(dāng)recursion3()結(jié)束時,控制轉(zhuǎn)回recursion2();當(dāng)recursion2()結(jié)束時,控制轉(zhuǎn)回recursion1(),這就是遞歸,不過在遞歸中所有的函數(shù)都是recursion()。
同時,在整個執(zhí)行過程中,每級函數(shù)都有自己的變量,它們使用同一個變量名,但是對應(yīng)于不同的數(shù)值,因此每一級程序返回時,都是不同的數(shù)值。
示例程序:

/* 以二進(jìn)制形式打印整數(shù) */
#include<stdio.h>
void to_binary(unsigned long n);
int main()
{
    unsigned long number;
    printf("please enter an integer (q to quit ):\n");
    while (scanf("%lu", &number) == 1)
    {
        printf("binary equivalent: ");
        to_binary(number);
        putchar('\n');
        printf("please enter an integer (q to quit ):\n");
    }
    printf("done.\n");
    return 0;
}
void to_binary(unsigned long n) //遞歸
{
    int r;
    r = n % 2;
    if (n >= 2)
    {
        to_binary(n / 2);
    }
    else;
    printf("%d", r);
    //putchar(r == 0 ? '0' : '1'); 占內(nèi)存較多
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第八章 遞歸(recursion) 8.1 導(dǎo)語 因?yàn)橐恍┲笇?dǎo)者傾向于先教遞歸作為第一個主要的控制結(jié)構(gòu),本章會以另...
    geoeee閱讀 1,541評論 0 5
  • 原文地址:C語言函數(shù)調(diào)用棧(一)C語言函數(shù)調(diào)用棧(二) 0 引言 程序的執(zhí)行過程可看作連續(xù)的函數(shù)調(diào)用。當(dāng)一個函數(shù)執(zhí)...
    小豬啊嗚閱讀 4,972評論 1 19
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,686評論 1 51
  • 想減肥 沒有恒心沒有毅力 現(xiàn)在已經(jīng)每天堅(jiān)持只吃早餐和午餐 晚上不吃 杜絕一切零食 還是感覺沒瘦下來 還...
    大情子閱讀 93評論 0 0
  • 卓瑪,你揚(yáng)一根細(xì)軟馬鞭 揚(yáng)徹我思慕的情懷 從美酒到揚(yáng)琴 從草原之風(fēng)到雪山之巔 原上舞動彩裙和哈達(dá) 卓瑪,你可是那未...
    木子愛若閱讀 613評論 2 12

友情鏈接更多精彩內(nèi)容