def azalt(s):
if len(s)< 1:
return s
else:
print('özyinelemesürecine girerken:', s)
azalt(s[1:])
print('özyinelemesürecinden çıkarken:', s)
azalt('12345')
output :
özyinelemesürecine girerken: 12345
özyinelemesürecine girerken: 2345
özyinelemesürecine girerken: 345
özyinelemesürecine girerken: 45
özyinelemesürecine girerken: 5 #(***)
özyinelemesürecinden çıkarken: 5
özyinelemesürecinden çıkarken: 45
özyinelemesürecinden çıkarken: 345
özyinelemesürecinden çıkarken: 2345
özyinelemesürecinden çıkarken: 12345
i didnt understand code after the #(***)
(i put for highlight)
i expect output looks like this
output :
özyinelemesürecine girerken: 12345
özyinelemesürecine girerken: 2345
özyinelemesürecine girerken: 345
özyinelemesürecine girerken: 45
özyinelemesürecine girerken: 5
For better understanding you can add another parameter to the function (lets call it level=
) that will increase by 1 when you call the function recursively:
def azalt(s, level):
if len(s) < 1:
return s
else:
print("the string before:", s, f"{level=}")
azalt(s[1:], level + 1)
print("the string after:", s, f"{level=}")
azalt("12345", level=1)
The result is now:
the string before: 12345 level=1
the string before: 2345 level=2
the string before: 345 level=3
the string before: 45 level=4
the string before: 5 level=5
the string after: 5 level=5
the string after: 45 level=4
the string after: 345 level=3
the string after: 2345 level=2
the string after: 12345 level=1
You see that second print()
(the one with after
) is executed when you return from recursive function.