<問題> よくわかる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をプリント 実行をイメージすること(全部実行しなくてよい。極端な再帰条件の場合と、停止条件の場合について、イメージが重要)