zoukankan      html  css  js  c++  java
  • 拓展,Fibonacci螺旋

    #该程序由023递归这课中的fibonacci数列递归写法修改而成
    #在写的过程中发现,如果要正确引导用户的每一次输入,写的代码比主程序还要多
    #当然,为了使程序在用户交互过程中显得更加友好,提供错误提示也是一个好习惯
    #
    #由fibonacci螺旋递归写法引申出的字串符格式化和内置方法的探索
    
    level = input('请输入Fibonacci螺旋层数:')
    
    #判断输入字符是否为大于0的整数,.isdigit()方法是判断字串符是否为整数
    #当然非数字或者是小数点都不在整数范围
    #在shell测试了一下发现负整数也不能用.isdigit()方法
    while not level.isdigit() or int(level) == 0:
        level = input('输入错误,请重新输入大于0的正整数):')
    #注意,我在这里用了float使输入的数字变为浮点数
    #以我现在的知识,如果这里不用float转化,
    #那么接下来的函数里 fab(level-1) + fab(level-2)会变为字串符的拼接。原因目前未明。  
    print('注意:两个数字不能同时为0!')
    FirstNum = float(input('第一个数字'))
    SecondNum = float(input('第二个数字'))
    
    #判断两个数字是否同时为0,注意,用and这个操作符
    while FirstNum == 0 and SecondNum == 0:
        print('注意:两个数字不能同时为0!')
        FirstNum = float(input('第一个数字'))
        SecondNum = float(input('第二个数字'))
    
    #循环打印输出,如果不加for语句,那么只输出最后那个结果
    #如果for level in里的level换成其他,那么
    for level in range(1,int(level)+1):
        #以下是递归主程序
        def fab(level): 
            #初始最开始两个数字的值
            if level == 1:
                global FirstNum
                return FirstNum
            elif level == 2:
                global SecondNum
                return SecondNum
            #如果没有上面那两个if判断,那么程序将进入死循环,原因是不是因为递归没给初始值呢?
            else:
                return (fab(level-1) + fab(level-2))
        
        result = fab(level)
        #%.2f把浮点数格式化为带两个小数点输出
        print('%.2f' % result, end = '  ')

    测试:

    请输入Fibonacci螺旋层数:abc
    输入错误,请重新输入大于0的正整数):-5
    输入错误,请重新输入大于0的正整数):0
    输入错误,请重新输入大于0的正整数):8
    注意:两个数字不能同时为0!
    第一个数字-2.9
    第二个数字3.15
    -2.90  3.15  0.25  3.40  3.65  7.05  10.70  17.75
  • 相关阅读:
    RUST实践.md
    redis.md
    opencvrust.md
    aws rds can't connect to mysql server on 'xx'
    Foundation ActionScript 3.0 With Flash CS3 And Flex
    Foundation Flash Applications for Mobile Devices
    Flash Mobile Developing Android and iOS Applications
    Flash Game Development by Example
    Actionscript 3.0 迁移指南
    在SWT中非UI线程控制界面
  • 原文地址:https://www.cnblogs.com/fishdm/p/3576933.html
Copyright © 2011-2022 走看看