zoukankan      html  css  js  c++  java
  • 迭代与递归,斐波拉系数和汉诺塔

    递归 满足递归的2个条件:定义函数时,调用自己. 要有一个正确的停止条件. 出来混一定要还才是递归.

    例子:

    def factorial(n):
    if n==1:
    return 1
    else:
    return n*factorial(n-1)
    number=int(input('请输入一个正整数:'))
    result=factorial(number)
    print('%d 的阶乘是: %d' % (number,result))

    迭代实现斐波拉契数列

    def abc(n):
    n1=1
    n2=1
    n3=1

    if n<1:
    print('输入错误!')
    return -1

    while (n-2)>0:
    n3=n2+n1
    n1=n2
    n2=n3
    n-=1

    return n3
    result=abc(20)
    if result!=-1:
    print('总共有%d对小兔子诞生!' % result)

    递归实现斐波拉契数列

    def fab(n):
    if n<1:
    print('输入错误!')
    return -1
    if n==1 or n==2:
    return 1
    else:
    return fab(n-1)+fab(n-2)

    result=fab(20)
    if result!=-1:
    print('总共有%d对小兔子诞生!' % result)

    PS:递归运算次数太多并不如迭代好用

    汉诺塔  #原理懂了,但是这里代码是如何print出X -->Y这些有疑问

    def hannot(n,x,y,z):
    if n==1:
    print(x,'-->',z)
    else:
    hannot(n-1,x,z,y) #将N-1个盘子从X移动到Y上
    print(x,'-->',z) #将最底下的盘子移动到Z上
    hannot(n-1,y,x,z) #将Y上的N-1个盘子移动到Z上
    n=int(input('请输入汉诺塔的层数:'))
    hannot(n,'x','y','z')

  • 相关阅读:
    Fluent API
    什么是blazor
    10.事务
    9.用ExecuteSqlCommand执行存储过程
    8.自增主键 插入指定主键的数据
    7.图
    6.实体与上下文的关系
    5.并发
    4.跟踪
    3.级联删除
  • 原文地址:https://www.cnblogs.com/009NotFound/p/10455965.html
Copyright © 2011-2022 走看看