鱼C论坛

 找回密码
 立即注册
查看: 2904|回复: 10

python22讲课后题

[复制链接]
发表于 2016-11-28 08:24:21 | 显示全部楼层 |阅读模式
1鱼币

def power(x, y):
    if y:
        return x * power(x, y-1)
    else:
        return 1
   
print(power(2, 3))

def gcd(x, y):
    if y:
        return gcd(y, x%y)
    else:
        return x
   
print(gcd(4, 6))

刚看了视频有点蒙蔽,请大神帮我解答一下,最好逐步解答,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-28 08:24:22 | 显示全部楼层
  1. def power(x, y):                   #定义幂的乘方函数
  2.     if y:
  3.         return x * power(x, y-1)   #如果y不等于0返回x*power(x, y-1)
  4.     else:
  5.         return 1                   #y=0,返回1
  6.    
  7. print(power(2, 3))                 

  8. def gcd(x, y):                     #定义最大公约数的方法
  9.     if y:                          #如果y不等于0返回gcd(y, x%y)
  10.         return gcd(y, x%y)
  11.     else:                          #如果y等于0返回gcd(x, y)中x位置的值
  12.         return x
  13.    
  14. print(gcd(4, 6))                   #6 != 0 返回 gcd(6,4)
  15.                                    #4 ! = 0 返回 gcd(4,2)
  16.                                    #2 ! = 0 返回 gcd(2,0)
  17.                                    #0   = 0 返回 2
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-28 08:54:00 | 显示全部楼层
def power(x, y):
    if y:
        return x * power(x, y-1)
    else:
        return 1
   
print(power(2, 3))
-------------------------------------------------------------->调用函数时, x = 2, y = 3
判断y是否为真, 3是真 --> return 2 * power(2, 2)
------------------------------------------->调用函数时, x = 2, y = 2
判断y是否为真, 2是真 --> return 2 * power(2, 1)
--------------------------------->调用函数时, x = 2, y = 1
判断y是否为真, 1是真 --> return 2 * power(2, 0)
------->调用函数时, x = 2, y = 0
判断y是否为真, 0是假 --> return 1
所以结果就是 1 * 2 * 2 * 2 = 8
-------------------------------------------------------------------------------------------------
def gcd(x, y):
    if y:
        return gcd(y, x%y)
    else:
        return x

print(gcd(4, 6))
---------------------------------------------------------------------------调用函数时x = 4 , y = 6
判断y是否为真, 6是真 --> return gcd(6, x%6)
-----------------------------------------------------------调用函数时x = 4 , y = 2
判断y是否为真, 2是真 --> return gcd(2, 4%2)
-------------------------------------调用函数时x = 2 , y = 0
判断y是否为真, 0是假 --> return 2
所以结果 2
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-28 08:59:49 | 显示全部楼层
Damn_it 发表于 2016-11-28 08:54
def power(x, y):
    if y:
        return x * power(x, y-1)

第一题这个不是相乘吗return 2 * power(2, 2)
第2题x%6 4 %6 不是4?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-28 09:03:14 | 显示全部楼层
没搞清楚你想表达什么,可以表达清楚一些吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-28 09:11:04 | 显示全部楼层
Damn_it 发表于 2016-11-28 09:03
没搞清楚你想表达什么,可以表达清楚一些吗

就是第一题的 return 2 * power(2, 2),return 2 * power(2, 1),return 2 * power(2, 0)它们不是相乘吗,一个数咋跟2个数乘
第二题的return gcd(6, x%6),x= 4 4&6不是4吗,咋是2
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-28 09:42:38 | 显示全部楼层
return 2 * power(2, 2),-------> 2 * 2 = 4
                return 2 * power(2, 1),---------> 2 * 1 = 2
                               return 2 * power(2, 0)-----> 2的0次方为1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-28 09:43:26 | 显示全部楼层
至于第题为什么会有 & 这个符号
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-28 09:44:49 | 显示全部楼层
第二题问清楚一点,再具体一点
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-11-28 11:15:29 | 显示全部楼层
Damn_it 发表于 2016-11-28 09:44
第二题问清楚一点,再具体一点

谢谢大家
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-28 11:41:59 | 显示全部楼层
我也是醉了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-24 05:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表