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
  • 相关阅读:
    在Linux下OpenCV的下载和编译
    安装GDB-ImageWatch ,在QT中查看图像
    linux下对qt编写的程序进行部署
    GOQTTemplate简单介绍
    寻找激光的交叉点
    基于opencv和QT的摄像头采集代码( GoQTtemplate3持续更新)
    图像处理工程师的要求研究
    如何将QT的pro图标修改的更显著一些
    快速阅读《QT5.9 c++开发指南》2
    小米盒子连接老式电脑显示器(VGA接口)
  • 原文地址:https://www.cnblogs.com/fishdm/p/3576933.html
Copyright © 2011-2022 走看看