python3で再帰関数
はじめに
私が再帰関数についてわかったことを共有します。
Code
python3.6
i = 0
def sum(n):
global i
i = i + 1
print(i)
if n <= 0:
return n
result = n + sum(n - 1)
# print
print("n : {}".format(n))
print("n-1 : {}".format(n-1))
print("n + (n-1) : {}".format(result))
print("--------------")
return result
sum(3)
解説
python3.6
i = 0
def sum(n):
global i
i = i + 1
print(i)
if n <= 0:
return n
result = n + sum(n - 1)
# print
print("n : {}".format(n))
print("n-1 : {}".format(n-1))
print("n + (n-1) : {}".format(result))
print("--------------")
return result
sum(3)
を実行すると
sum(3)の場合
couunt : 1回
couunt : 2回
couunt : 3回
couunt : 4回
n : 1
n-1 : 0
n + (n-1) : 1
--------------
n : 2
n-1 : 1
n + (n-1) : 3
--------------
n : 3
n-1 : 2
n + (n-1) : 6
--------------
では10回なら
couunt : 1回
couunt : 2回
couunt : 3回
couunt : 4回
couunt : 5回
couunt : 6回
couunt : 7回
couunt : 8回
couunt : 9回
couunt : 10回
couunt : 11回
n : 1
n-1 : 0
n + (n-1) : 1
--------------
n : 2
n-1 : 1
n + (n-1) : 3
--------------
n : 3
n-1 : 2
n + (n-1) : 6
--------------
n : 4
n-1 : 3
n + (n-1) : 10
--------------
n : 5
n-1 : 4
n + (n-1) : 15
--------------
n : 6
n-1 : 5
n + (n-1) : 21
--------------
n : 7
n-1 : 6
n + (n-1) : 28
--------------
n : 8
n-1 : 7
n + (n-1) : 36
--------------
n : 9
n-1 : 8
n + (n-1) : 45
--------------
n : 10
n-1 : 9
n + (n-1) : 55
--------------
になります。
3 + sum(3 - 1)
| 2
sum(2 - 1) + sum(1 - 1)
| 1
sum(1-1) + sum(0-1)
| 0
sum(0-1)
ifの判定がTrueになるのでnがreturnされて
下のreturn resultまでは行かずに終了する。
3 +
(3-1 +
(2-1 +
(1-1 +
(0-1))))
このようなイメージ
参考
多大に参考にさせて頂きました。
終わりに
自分のイメージなので他の人が分かりやすいかは分かりませんが参考になれば幸いです。
Author And Source
この問題について(python3で再帰関数), 我々は、より多くの情報をここで見つけました https://qiita.com/shun-yae/items/2f6e2285d1ad08171f8c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .