迭代和递归(Python)--乘方、最大公约数、汉诺塔、斐波那契、回文字符串
来源:互联网 发布:java泛型有什么用 编辑:程序博客网 时间:2024/05/21 17:25
1.迭代
def iterPower(base,exp): result=1.0 while exp>0: result*=base exp-=1 return result
运行结果:
2.递归的乘法运算:
def recurMul(a,b): if b==1: return a else: return a+recurMul(a,b-1)
运行结果:
3.递归乘方:
def recurPowerNew(base,exp): if exp==0: return 1 elif exp>0 and exp%2==0: return recurPowerNew(base*base,exp/2) else: return base*recurPowerNew(base,exp-1)
运行结果:
4.最大公约数:
迭代法:
def gcdIter(a,b): r=1 while r!=0: r=a%b a=b b=r return a
运行结果:
递归:
def gcdRecur(a,b): if b==0: return a else: return gcdRecur(b,a%b)
运行结果:
5.汉诺塔:
def printMove(fr, to): print('move from ' + str(fr) + ' to ' + str(to))def Towers(n, fr, to, spare): if n == 1: printMove(fr, to) else: Towers(n-1, fr, spare, to) Towers(1, fr, to, spare) Towers(n-1, spare, to, fr)
运行结果:
6.斐波那契数
def fib(x): """assumes x an int >= 0 returns Fibonacci of x""" assert type(x) == int and x >= 0 if x == 0 or x == 1: return 1 else: return fib(x-1) + fib(x-2)
运行结果:
7.回文字符串:
def isPalindrome(s): def toChars(s): s = s.lower() ans = '' for c in s: if c in 'abcdefghijklmnopqrstuvwxyz': ans = ans + c return ans def isPal(s): if len(s) <= 1: return True else: return s[0] == s[-1] and isPal(s[1:-1]) return isPal(toChars(s))
运行结果:
来自MIT的MOOC课件
0 0
- 迭代和递归(Python)--乘方、最大公约数、汉诺塔、斐波那契、回文字符串
- 斐波那契数列(迭代和递归)
- 斐波那契数列迭代和递归实现
- 关于递归和迭代的 一次小实验(基于斐波那契数列)
- 斐波那契数列的递归和迭代(数据结构笔记)
- 斐波那契数列【迭代+递归】
- 斐波那契数列的递归和迭代实现之差异
- 用递归和迭代分别处理斐波那契数列
- 通过斐波那契数列来比较递归和迭代的区别
- 用栈和迭代求解斐波那契数的非递归算法
- 用递归和迭代分别处理斐波那契数列
- C语言实现斐波那契数列的两种方法(递归和迭代)
- 斐波那契数的迭代实现和递归实现
- 剑指offer----斐波那契数列的实现--递归和迭代
- php递归和迭代实现斐波那契数列
- 斐波那契数列的递归算法和迭代算法
- 递归--阶乘/斐波那契数列/判断回文字符串/字符串翻转
- C语言使用非递归和递归函数分别实现阶乘,斐波那契,最大公约数
- 秒杀多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别
- vi编辑器,学用编辑命令!
- PHP中使用memcache存储session的三种配置方法
- C#集合总结
- BaseAdapter + Gallery
- 迭代和递归(Python)--乘方、最大公约数、汉诺塔、斐波那契、回文字符串
- 关于SSDB的网络模型
- openwrt中luci学习笔记
- C++中的指针和引用
- java-线程并发-缓冲器-模拟
- Android 4.4 Launcher3——导入eclipse进行调试
- Caffe代码导读(0):路线图
- 微软的系统管理服务器SMS
- jQuery