''#the 代码需要在递归终止时执行基本情况时返回接收方的值,
import math
days = int(input())
def adv(days,recipient,likes,depth):
depth+=1
print(" "*depth + "adv({},{})at day {} and likes are {}".format(days-4,recipient,days,likes))
days -= 1
if days == 0:
#print(recipient)
print(likes)
#print(" "*depth + "adv({},{})at day {} and likes are {}".format(days-4,recipient,days,likes))
这里返回接收方' 返回收件人 还: 喜欢=喜欢+数学地板(收件人/2( ADV(天,数学地板(收件人/2(*3,喜欢,深度(
#the 变量 a 应该接收接收者的值,但
a= adv(天+1,5,0,1(
打印(a(
它返回无
这是因为这是一个递归函数,但是当它从自身内部调用时,你不会返回调用。相反,当从自身内部调用时,最里面的返回值将被丢弃,而 None 将被传递并由原始调用返回。你可以这样修复它:
import math
days = int(input())
def adv(days,recipient,likes,depth):
depth+=1
print(" "*depth + "adv({},{})at day {} and likes are {}".format(days-4,recipient,days,likes))
days -= 1
if days == 0:
return recipient
else:
likes =likes+ math.floor(recipient/2)
return adv(days,math.floor(recipient/2)*3,likes,depth) #<------
a= adv(days+1,5,0,1)
print(a)
输出:
5
adv(2,5)at day 6 and likes are 0
adv(1,6)at day 5 and likes are 2
adv(0,9)at day 4 and likes are 5
adv(-1,12)at day 3 and likes are 9
adv(-2,18)at day 2 and likes are 15
adv(-3,27)at day 1 and likes are 24
27