鱼C论坛

 找回密码
 立即注册
查看: 807|回复: 3

递归课后题求助

[复制链接]
发表于 2018-9-14 10:18:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
能解释解释这两个程序 的过程么   里面的函数是如何调用自己的

0. 使用递归编写一个 power() 函数模拟内建函数 pow(),即 power(x, y) 为计算并返回 x 的 y 次幂的值。
def power(x, y):
    if y:
        return x * power(x, y-1)
    else:
        return 1
   
print(power(2, 3))
复制代码


1. 使用递归编写一个函数,利用欧几里得算法求最大公约数,例如 gcd(x, y) 返回值为参数 x 和参数 y 的最大公约数。
def gcd(x, y):
    if y:
        return gcd(y, x%y)
    else:
        return x
   
print(gcd(4, 6))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-14 10:24:07 | 显示全部楼层
  1. def power(x, y):
  2.     print('调用power(%s,%s)'%(x,y))
  3.     if y:
  4.         print('进if')
  5.         return x * power(x, y-1)
  6.     else:
  7.         print('进else')
  8.         return 1
  9. print(power(2,3))
复制代码

自己加入打印就知道了,下面那个如法炮制
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-14 11:44:37 | 显示全部楼层
power(2, 3):
     第一次调用:
     y=3,power(2,3)返回 2*power(2,2);
     y=2,power(2,2)返回 2*power(2,1);
     y=1;power(2,1)返回 2*power(2,0);
     y=0;power(2,0)返回1;
所以power(2,3)=2*(2*(2*(1)));
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-14 14:36:39 | 显示全部楼层
可能你是这里有疑惑?
if y:
这个的意思是if y!=0:
当y==0的时候,也就是y==False的时候,循环就停下来了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-2 04:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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