python——用递归的方法求x的y次幂

def function(x,y):
    if x == 0:
        return 0
    if y == 0:
        return 1
    return function(x,y-1)*x



while(1):
    number = int(input('请输入x的值:'))
    y = int(input('请输入y的值:'))
    print('x的y次幂的结果是:')
    result = function(number,y)
    print(result)
          

 

转载于:https://www.cnblogs.com/carlber/p/9398124.html

### 蓝桥杯汉诺塔问题的Python递归实现 对于汉诺塔问题,在给定三个柱子的情况下,目的是将所有的盘子从起始柱移动到目标柱。此过程遵循特定规则:一次仅能移动一个盘子,并且任何时候大盘都不能放在小盘之上。 针对该问题的一个典型递归解决方案如下所示: ```python def hanoi(n, source, auxiliary, target): if n == 1: print(f"Move disk 1 from {source} to {target}") return hanoi(n - 1, source, target, auxiliary) # 将n-1个盘子从源柱借助目标柱移至辅助柱 print(f"Move disk {n} from {source} to {target}") # 移动第n个盘子 hanoi(n - 1, auxiliary, source, target) # 将剩余n-1个盘子从辅助柱借助源柱移至目标柱 ``` 上述代码定义了一个名为`hanoi`的函数来处理不同数量的盘子[n]以及它们之间的转移逻辑[^1]。每当遇到单个盘子的情况时(`if n == 1`),就直接执行相应的打印操作表示完成了一次有效的移动动作;而对于多于一个盘子的情形,则采用分治策略——先利用递归来解决较小规模的问题(即将前\(n-1\)个盘子转移到临时位置),再单独处理最大的那个盘子,最后再次运用同样的方法把之前暂存的小盘们安置好。 为了追踪总的移动次数并能在达到指定步数[m]时停止程序或者记录下某一步的具体情况,可以在原有基础上稍作修改加入计数器机制: ```python sum = 0 def hanoi_with_steps(x, y, z, n, m): global sum if n == 1: sum += 1 if sum == m: print(f"#Step {m}: Move disk 1 from {x} -> {z}") return True print(f"Move disk 1 from {x} -> {z}") else: if hanoi_with_steps(x, z, y, n - 1, m): return True sum += 1 if sum == m: print(f"#Step {m}: Move disk {n} from {x} -> {z}") return True print(f"Move disk {n} from {x} -> {z}") if hanoi_with_steps(y, x, z, n - 1, m): return True return False ``` 这段增强版的代码不仅实现了基本功能还能够按照需输出具体哪一步的操作详情[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值