|
10鱼币
- # 使用递归编写一个 power() 函数模拟内建函数 pow()
- # 即 power(x, y) 为计算并返回 x 的 y 次幂的值
- def power(x,y):
- if y == 0:
- print(f"y == 0 , y : {y} , x : {x}")
- return 1,print(f" ? y : {y} , x : {x}")
- else:
- print(f"递 : y : {y} , x : {x}")
- power(x,y-1)
- print(f"归 : y : {y} , x : {x}")
- return
- power(2,3)
复制代码
问:
x 怎么 幂运算
值存在那?
我将其分为三部分,你看下有啥还不明白的
- def power(x, y):
- if y == 0:
- print(f"y == 0 , y : {y} , x : {x}") # 2 部分
- return 1 # 2 部分 到y等于时开始退栈 1出开始往下执行
- else:
- print(f"递 : y : {y} , x : {x}") # 1 部分
- x = power(x, y-1) * x # 1 部分:每次执行到这里都会先停一下,调用 power(x, y-1)函数压栈
- """
- x = 1 * 2 第一次调用
- x = 2 * 2 第二次调用
- x = 4 * 2 第三次调用
- """
- print(f"归 : y : {y} , x : {x}") # 3 部分
- return x # 3 部分
- """
- 第一次返回 1 给上一次的 power(x, y-1) 退栈
- 第二次返回 2 给上一次的 power(x, y-1) 退栈
- 第三次返回 4 给上一次的 power(x, y-1) 退栈
- 第四次返回 8 栈空 返回主函数
- """
- print(power(2, 3))
复制代码
|
|