博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3 的递归
阅读量:4575 次
发布时间:2019-06-08

本文共 2128 字,大约阅读时间需要 7 分钟。

1、递归的条件:

1、有调用函数自身

2、设置正确的返回条件

2、斐波那契数列的实现

#递归方法,分治思想  def fibonacci(n):    if n<1:        print("输入有误")        return -1    if n==1 or n==2:        return 1    else:        return fibonacci(n-1)+fibonacci(n-2)#迭代方法      def fibonacci1(n):    f1=1    f2=1    if n<1:        print("输入有误")        return -1    for i in range(1,n+1):        if i==1 or i==2:            result=1        else:            result=f1+f2            f1=f2            f2=result    print(result)

 

3、pow()函数的递归实现

def power(x,y):    '递归形式'    if y==0:        return 1    else:        return x*power(x,y-1)def power1(x,y):    '非递归形式'    result=1    while y:        result*=x        y-=1    print(result)

4、递归方式求最大公约数

def gcd(x,y):        if x%y ==0:        print(y)    else:        #x=y        #y=r        gcd(y,x%y)

5、汉诺塔

def hannoi(n,x,y,z):    if n ==1:        print(x,'--->',y)    else:                hannoi(n-1,x,z,y)#先将N-1层从x移到y上        print(x,'--->',z)#再将第n层从x移到z上        hannoi(n-1,y,x,z)#再将N-1层从y移到z上

6、十进制转二进制递归实现

def ddbin2(x):        result=''    if x:               result=ddbin2(x//2)        return result+str(x%2)    else:        return resultprint(ddbin2(2))

7、回文联递归实现

def hui(x):    lens=len(x)    for i in range(lens):        if x[i]==x[lens-i-1]:            if i==lens//2:                print("是回联文")        else:            print("no!!")            return 0#hui("上海自来水来自海上")#hui("12231")def hui2(x):    i=0    lens=len(x)    if x[0] ==x[lens-1]:        i=i+1        y=x[i:lens-i]        print(x[i:lens-i])        if len(y)==1 or len(y)==2:            print("是回文联")            return 1        hui2(y)    else:        print("不是回文联")        return 0                                hui2("上海自来水来自海上")hui2("楼望海海望楼")hui2("jhkhkkhh")
def is_palindrome(n, start, end):        if start > end:                return 1             else:                return is_palindrome(n, start+1, end-1) if n[start] == n[end] else 0        string = input('请输入一串字符串:')length = len(string)-1if is_palindrome(string, 0, length):        print('\"%s\"是回文字符串!' % string)else:        print('\"%s\"不是回文字符串!' % string)

 

转载于:https://www.cnblogs.com/PythonFCG/p/8371807.html

你可能感兴趣的文章
ASP.NET MVC的帮助类HtmlHelper和UrlHelper
查看>>
02_ListActive中响应事件 并LogCat输出
查看>>
doubleclick adx note
查看>>
Celery框架
查看>>
[c#]asp.net开发微信公众平台(4)关注事件、用户记录、回复文本消息
查看>>
[转载,感觉写的非常详细]DUBBO配置方式详解
查看>>
Android在Eclipse上的环境配置
查看>>
面向对象(五)
查看>>
android平台下使用点九PNG技术
查看>>
Python学习3,列表
查看>>
最长回文子串
查看>>
JAVA基础-JDBC(一)
查看>>
js中for和while运行速度比较
查看>>
算法第5章作业
查看>>
7.9 练习
查看>>
基于ArcGIS JS API的在线专题地图实现
查看>>
learnByWork
查看>>
lua 函数
查看>>
Git的基本命令
查看>>
四平方和
查看>>