void func(int no) { if(no > 0) { func(no - 1); printf("%d", no); func(no - 2); } }上のに示す関数をfunc(3)と呼び出したときの実行結果を示せ。
という問題が参考書にあり,解いてみたのですが,さっぱり分かりません。
func(3)と呼び出す → func(no - 1)の部分で func(2)を呼び出す。
func(2)と呼び出す → func(no - 1)の部分で func(1)を呼び出す...。
これがno = 0になるまで繰り返され…る…?わけないしなぁ…と思い,
実際に組んでみると"1231"となったのですが、
肝心のなぜこうなるのか,がさっぱりです。
OS: Windows Vista
コンパイラ:Visual C++ 2008 Express
どの程度C言語を理解しているか:ど素人(独学2ヶ月程度)
どなたかご教授していただければ幸いです。