2915658109 发表于 2020-9-11 19:29:13

定义类似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))

小甲鱼的铁粉 发表于 2020-9-11 19:37:40

pow(x,y)的意思不就是x的y次方吗?就不用想那么多,就是x的y次方

2915658109 发表于 2020-9-11 19:41:12

小甲鱼的铁粉 发表于 2020-9-11 19:37
pow(x,y)的意思不就是x的y次方吗?就不用想那么多,就是x的y次方

老哥。。我这是poe啊。。。自定义函数

小甲鱼的铁粉 发表于 2020-9-11 19:44:10

2915658109 发表于 2020-9-11 19:41
老哥。。我这是poe啊。。。自定义函数

我看你的标题是pow函数问题,就以为是就次方的函数了
这应该是一个编程练习吧,你可以发发题目

2915658109 发表于 2020-9-11 19:45:11

救命啊。。。有木有大神讲解下思路。。实在想不明白

sunrise085 发表于 2020-9-11 20:21:01

想象力不够,就有笔头写一下啊。俗话说好脑子不如烂笔头
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)

2915658109 发表于 2020-9-11 21:39:39

sunrise085 发表于 2020-9-11 20:21
想象力不够,就有笔头写一下啊。俗话说好脑子不如烂笔头
4的4次方太长了,给你写一下2的3次方吧



额 大佬您的意思是第一次执行是2*(2,3) 那问题是2*3得六啊。。。或者(2,3)不是乘法的意思??还是说先执行(2,3-1) 可这样第三次调用Y就已经是0了啊。。根本没有第四次调用。。还是不甚理解

sunrise085 发表于 2020-9-11 21:49:11

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]
查看完整版本: 定义类似Pow函数的问题