私はPythonが初めてで、関数について学んでいます。私は次の機能に出くわし、機知に富んでそれがどのように機能するかを理解しました。の値に関係なくb
、答えは常に 6 になるように思えますが、そうではありません。
コード
def mult(a, b):
if b == 0:
return 0
rest = mult(a, b - 1)
value = a + rest
return value
print "3 * 2 = ", mult(3, 2)
何が起こるかについての私の理解
- は 0 ではないので
b
進みます rest
値が割り当てられ、3, 1
関数が再度実行されますb
は 1 で 0 に等しいので、rest
rest
値が割り当てられ、3, 0
関数が再度実行されますb
は現在ゼロであるため、値 0 を返します- 次に、3 の値があり、3 の値があった
value
ように、値 3 + 3 を持つものに進みます。a
rest
(3,0)
- 値 6 を返します
しかし、 を割り当てるmult(3,4)
と、値 12 が返されます。私の理解では、それは不可能です。明らかに、私はロジック フローを理解していません。私は何を間違っていますか?