STEP 4.4

<問題> よくわかるC 51ページのQ4_6の問題。2つの関数(PrintNum1とPrintNum2)について、プログラムの実行結果を予想せよ。

#include <stdio.h>

void PrintNum1 (int);
void PrintNum2 (int);

int main (void) {
    printf("PrintNum1::");
    PrintNum1 (10); /* 実行 プリント */
    printf("\n");
    printf("PrintNum2::");
    PrintNum2 (10);   /* 実行 プリント 引数はどちらも10。プリントの結果は */
    printf("\n");
    return 0;
}


void PrintNum1 (int n) {
    if (n < 1) {
        return ;
    }
    printf("%3d", n); /* 書いてから */
    PrintNum1 (n-1);  /* 再帰呼び出し */
}

void PrintNum2 (int n) {
    if (n < 1) {
        return ;
    }
    PrintNum2 (n-1); /* 再帰呼び出しの後 */
    printf("%3d", n); /* プリント */
}

<ヒント>

例題集へ 





解答例

PrintNum1:: 10  9  8  7  6  5  4  3  2  1
PrintNum2::  1  2  3  4  5  6  7  8  9 10

10をプリントのあと、PrintNum1(9)
PrintNum2(9)の実行のあと、10をプリント

実行をイメージすること(全部実行しなくてよい。極端な再帰条件の場合と、停止条件の場合について、イメージが重要)