zoukankan      html  css  js  c++  java
  • 小甲鱼Python第二十二讲课后习题

    笔记:
    斐波那契数列的两种实现方式:
     
    迭代的方式:
    自己写的:
    def fab(n):
    n1 =1
    n2 =1
    n3 =1
    if n < 1:
    return -1
    if n ==1:
    return 1
    if n == 2:
    return 1
    while (n-2)>=0: #这里总写for循环
    n3 = n1 +n2   #n1 和 n2的顺序总写反
    n1 = n2
    n2 = n3
    n -=1
    return n3
    result =fab(20)
    if result != -1:
    print('总共有小兔子%d 只'%result)

    递归的方式:
    自己写的

    def aaa(n):
      if n <0:
        return -1
      if n ==1 or n ==2:
        return 1
      else:
        return aaa(n-1)+aaa(n-2)


    result =aaa(20)
    if result!=-1:
      print('总共%d只兔子'%result)

    用递归的方式解决汉诺塔问题:

    def hannoi(n,x,y,z):
    if n == 1:
    print(x,'-->',z)
    else:
    hannoi(n-1,x,z,y)#将前n-1个盘子移动到y上
    print(x,'-->',z)#将最底下的盘子移动到z上
    hannoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上

    n = int(input('请输入汉诺塔的层数:'))
    hannoi(n,'X','Y','Z')

    动动手:

    0. 使用递归编写一个十进制转换为二进制的函数(要求采用“取2取余”的方式,结果与调用bin()一样返回字符串形式)。

    def Bin(n):
    temp = ''
    if n:
    temp = Bin(n//2)
    temp += str(n%2)
    return temp
    else:
    return temp

    num = int(input('请输入一个十进制数:'))
    print(num,'-->',Bin(num))

    1. 写一个函数get_digits(n),将参数n分解出每个位的数字并按顺序存放到列表中。举例:get_digits(12345) ==>
    [1, 2, 3, 4, 5]
    解题思路:利用除以10取余数的方式,每次调用get_digits(n//10),并将余数存放到列表中即可。要注意的是结束条件
    设置正确。
    def get_digits(n):
    result = ''
    if n:
    result = get_digits(n//10)
    result += str(n%10)
    return list(result)

    num = int(input('请输入一个数:'))
    print(get_digits(num))


    2. 还记得求回文字符串那道题吗?现在让你使用递归的方式来求解,亲还能傲娇的说我可以吗?
    解题思路:有好多种方法,不过综合效率来说,小甲鱼的实现方式比较朴素,利用递归每次索引前后两个字符进行对
    比,当start > end的时候,也正是首尾下标“碰面”的时候,即作为结束递归的条件。

    def Huiwen(temp,start,end):
    if start > end:
    return 1
    else:
    if temp[start]==temp[end]:
    return Huiwen(temp,start+1,end-1)
    else:
    0

    temp = input('请输入一段文字:')
    length = len(temp)
    end = len(temp)-1
    if Huiwen(temp,0,end):
    if temp[0:length//2] == temp[length//2:length]:
    print('%s不是一个回文字符串!'%temp)
    else:
    print('%s是一个回文字符串!'%temp)
    else:
    print('%s不是一个回文字符串!'%temp)


    3. 使用递归编程求解以下问题:
     
    def Age(n):
    if n == 1:
    return 10
    if n > 1:
    age = 10
    age = Age(n-1) + 2
    return age

    num = int(input('请输入要查询的编号:'))
    print('第%d个人的年龄是:%d'%(num,Age(num)))
     
  • 相关阅读:
    C# 反射
    jquery 循环绑定click的问题
    socket 编程
    EF code first出现错误:列名 Discriminator 无效
    C# 两个类是否继承关系
    C# MD5,hmacSHA1
    文件分块上传
    读写CSV到DataTable
    ajax 提交数组 泛型集合(嵌套集合)
    Json中Date映射到model
  • 原文地址:https://www.cnblogs.com/jieperhaps/p/9039640.html
Copyright © 2011-2022 走看看