- ベストアンサー
専門学校で情報処理の勉強中にパソコン故障。有識者に頼みたい。
- 専門学校で情報処理の勉強中に自宅のパソコンが故障しており使用不可能です。
- プログラムを実行する必要がありますが、パソコンの故障で困っています。
- 有識者の方に教えていただきたいです。質問内容は、class Calculator内で引数nとpを使用して再帰的に計算を行っています。出力の値を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
再帰プログラムですから,プログラムを実行して最終的なc.countの値だけ表示しても理解できるものではないと思います。nに適当な値を入れて手動でトレースすれば理解できるのではないですか。 -------- n=1の場合のcalc()メソッドの呼ばれ方は次のとおり。 (注意:右から左に読んでください) calc(1,2)←calc(1,1)←calc(1,0) for文によって一方向の枝が伸び,if(p>n) return なのでそれが n+1段階つまり今回は2段階繰り返される。よって出力される値は3です。 -------- n=2の場合のcalc()メソッドの呼ばれ方は次のとおり。 calc(2,3)←calc(2,2)←calc(2,1)←calc(2,0) calc(2,3)/ calc(2,3)←calc(2,2)/ calc(2,3)/ calc(2,3)←calc(2,2)←calc(2,1)/ calc(2,3)/ calc(2,3)←calc(2,2)/ calc(2,3)/ for文によって2方向の枝が伸び,if(p>n) return なのでそれが n+1段階つまり今回は3段階繰り返される。よって出力される値は15です。 -------- 上図で表現してきたcalc()メソッドの呼び出し回数を式で表現すると次のとおり。 3回 = (1×1)+1+1 15回 = (2×2×2)+(2×2)+2+1 この結果から,n=3の場合は次のようになることが推測できるでしょう。 121回 = (3×3×3×3)+(3×3×3)+(3×3)+3+1 ここまでくればPCの故障は関係ないはずです。nを用いたらどう表現できるか考えてみてください。学校の宿題かもしれないので最終的な解答は省略ということで。
お礼
ありがとうございました