定义类似Pow函数的问题
def poe(x,y):if y:
return x*poe(x,y-1)#假设这里X和Y都是4应该是4*(4,3)=4*12或者4*4*4*4=1024啊 为啥是4的三次方结果 而且为啥(X,Y)就代表是X的Y次方 这里是自定义函数啊 为啥不是X直接乘Y 求解求解啊 脑袋都想破了
else:
return 1
print(poe(4,4)) pow(x,y)的意思不就是x的y次方吗?就不用想那么多,就是x的y次方
小甲鱼的铁粉 发表于 2020-9-11 19:37
pow(x,y)的意思不就是x的y次方吗?就不用想那么多,就是x的y次方
老哥。。我这是poe啊。。。自定义函数 2915658109 发表于 2020-9-11 19:41
老哥。。我这是poe啊。。。自定义函数
我看你的标题是pow函数问题,就以为是就次方的函数了
这应该是一个编程练习吧,你可以发发题目
救命啊。。。有木有大神讲解下思路。。实在想不明白 想象力不够,就有笔头写一下啊。俗话说好脑子不如烂笔头
4的4次方太长了,给你写一下2的3次方吧
执行print(poe(2,3)),会先去调用poe,然后得到其返回值
第一次调用poe,此时x=2,y=3,遇到 if 判断,进入 if 语句块,执行return x*poe(x,y-1) 会先去调用poe,再将其返回值与x相乘
第二次调用poe,此时x=2,y=2,遇到 if 判断,进入 if 语句块,执行return x*poe(x,y-1) 会先去调用poe,再将其返回值与x相乘
第三次调用poe,此时x=2,y=1,遇到 if 判断,进入 if 语句块,执行return x*poe(x,y-1) 会先去调用poe,再将其返回值与x相乘
第四次调用poe,此时x=2,y=0,遇到 if 判断,进入 else 语句块,执行return 1, 直接返回1,返回到上次调用poe的位置
返回到第三次调用时的 if 语句块内return语句处,得到 x*1 即2,然后return 2, 直接返回1,返回到上次调用poe的位置
返回到第二次调用时的 if 语句块内return语句处,得到 x*2 即4,然后return 4, 直接返回4,返回到上次调用poe的位置
返回到第一次调用时的 if 语句块内return语句处,得到 x*4 即8,然后return 8, 直接返回8,返回到上次调用poe的位置
返回到print中,print(8)
sunrise085 发表于 2020-9-11 20:21
想象力不够,就有笔头写一下啊。俗话说好脑子不如烂笔头
4的4次方太长了,给你写一下2的3次方吧
额 大佬您的意思是第一次执行是2*(2,3) 那问题是2*3得六啊。。。或者(2,3)不是乘法的意思??还是说先执行(2,3-1) 可这样第三次调用Y就已经是0了啊。。根本没有第四次调用。。还是不甚理解 2915658109 发表于 2020-9-11 21:39
额 大佬您的意思是第一次执行是2*(2,3) 那问题是2*3得六啊。。。或者(2,3)不是乘法的意思??还是说先执行( ...
第一次执行是2*(2,3) 那问题是2*3得六啊
这是什么鬼?
第一次执行到if语句块内的时候,是return 2*poe(2,2),哪儿来的2*3??
可这样第三次调用Y就已经是0了啊
你认真看我写的了吗?
第一次调用poe时,y=3;第二次调用poe时,y=2;第三次调用poe时,y=1;第四次调用poe时,y=0 。
页:
[1]