基本情報 科目B 再帰 IF文 について
解決したいこと
基本情報科目Bに関連する再帰の問題で躓いています。
問題コード
整数型: t(整数型: x)
if(x > 1)
return t(x - 1) + x
else
return 1
endif
問い、解答
問題:関数tをt(4)と呼び出すと戻り値は?
解答:10
自分の理解では、解答が「1」になります。
if文で(4>1)がtrueとなり、
return t(3) + x となるのでt(3)で関数を呼び出して
if文でt(3>1)がtrueとなり、
return t(2) + x となるのでt(2)で関数を呼び出して
if文で(2>1)がtrueとなり、
return t(1) + x となるのでt(1)で関数を呼び出して
if文で(1>1)がfalseとなり、
retun 1 と書いてあるので
戻り値は「1」と理解してしまっています。
解説を見るとここまでの考え方は間違っていないように
見えて解説を読んでも理解が追いつくのですが
以下の解説文から「?!」となって全然理解ができません。
以下、解説文より3文を抜粋します。
「値1をt(1)の戻り値として返す、t(1)を終了し、
t(2)の手続きを実行する。」
「t(3)の戻り値6 + t(4)におけるxの値4=値10を求める」
「値10をt(4)の戻り値として返す」
このあたりが全く理解できません。
なぜ戻り値1をつかってt(1)となるのか、
そこから戻り値が増えていくのか
理解もイメージもできません。。。
今月から基本情報の学習を始めて
科目Bで手こずっています。m( _ _)m
基本情報QA投稿が増える予定ですが
どなたかお力を貸してください。!!
よろしくお願いいたします。