[過去ログ]
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1478440682/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
43: 40 [sage] 2016/11/10(木) 14:01:09.75 ID:8ULjF/bN >>41 >再帰呼び出し後に書く recurse(i+1); printf("%d ", i); >と >書いてから再帰呼び出し printf("%d ", i); recurse(i+1); >の違いとか これはこの本の次のページにも書いてありました。 書いてから再帰呼び出しの場合は昇順(1,2,3,4,5,6~)になりますね。 相変わらず曖昧な理解なんですが、 どのiの場合もi=10に達するまではrecurse(i+9)までしか実行されていなくて、 printfは実行されていない待機中の状態だと考えればいいのでしょうか? それでi=10でif条件文を抜けて、i=9からi=0まで数字が大きい方から順番にまだ実行していなかった printfを降順で実行していくのでしょうか? この本(独習C)には > 引数の値が10に達すると、recurse()の再帰呼び出しから戻りはじめます。関数は、呼び出し元に戻る >ものなので、recurse()は直前の呼び出し元に戻り、そこでprinf()を文を実行して「9」と表示し、 >さらに前の呼び出し元に戻ります。こうしてrecurse()は、今度は「8」と表示します。 その後も同じ>プロセスが繰り返され、すべての呼び出しから戻った段階でプログラムが終了します。 実行される順番が、最初のi=0からではなく、直近のi=9からなのはなぜなのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1478440682/43
45: デフォルトの名無しさん [sage] 2016/11/10(木) 14:09:10.79 ID:gEXUDT4B この手の人は、具体的な実装例を見さえすれば、すぐさま疑問が解消されるんだよ >>43でも「待機する」だとか なんで逆順になるのか分からないとか 言っているが スタックフレームさえ知れば全ての疑問は解決だし C/C++するのにスタックフレームさえ知らない状態だと このさき困難だろう http://mevius.5ch.net/test/read.cgi/tech/1478440682/45
51: デフォルトの名無しさん [sage] 2016/11/10(木) 14:51:19.03 ID:IzCfpVGN >>43 まず大前提としてプログラムの流れは1本道で別れたりしないし、待機みたいなことも普通しない そして再帰関数という特別な関数があるわけではない、recurseは普通の関数と何も変わらない void recurse(int i) { if(i < 10) { recurse(i + 1); printf("%d " , i); } } この4行目はrecurseという関数を呼び出している つまり自分自身を呼ぶのでこの4行目の呼び出し後、recurse関数の最初に戻る ただし引数iは1大きい値で呼ぶ これを入れ子のように10回繰り返すことになる http://mevius.5ch.net/test/read.cgi/tech/1478440682/51
52: 43 [sage] 2016/11/10(木) 15:05:17.38 ID:8ULjF/bN >>51 レスありがとうございます。 ttps://ipa-zone.info/page-2644/ このページに私が使っている独習Cの再帰の部分が丸ごと転載されているんですが(違法?)、 i=0~10と昇順で増加していく前半部分でも呼び出された関数(recurse(1)など)は終了した訳ではないですよね? 後半のi=10から降順で減少していくときにはじめてprintfが実行されて関数が終了すると思うんですが、 LIFOなんで最後に呼び出されたrecurse(9)からrecurese(0)まで降順で残ったprintfを実行していくということではないんですか? http://mevius.5ch.net/test/read.cgi/tech/1478440682/52
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.508s*