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

测试:

  1. 请输入Fibonacci螺旋层数:abc
  2. 输入错误,请重新输入大于0的正整数):-5
  3. 输入错误,请重新输入大于0的正整数):0
  4. 输入错误,请重新输入大于0的正整数):8
  5. 注意:两个数字不能同时为0
  6. 第一个数字-2.9
  7. 第二个数字3.15
  8. -2.90 3.15 0.25 3.40 3.65 7.05 10.70 17.75

拓展,Fibonacci螺旋的更多相关文章

  1. [zoj 3774]Power of Fibonacci 数论(二次剩余 拓展欧几里得 等比数列求和)

    Power of Fibonacci Time Limit: 5 Seconds      Memory Limit: 65536 KB In mathematics, Fibonacci numbe ...

  2. 算法——js(Fibonacci数列)

    斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家列昂纳多·斐波那契(Leonardoda Fibonacci[1]  )以兔子繁殖为例子而引入,故又称为“兔子数列”,指 ...

  3. hdu3306 Another kind of Fibonacci【矩阵快速幂】

    转载请注明出处:http://www.cnblogs.com/KirisameMarisa/p/4187670.html 题目链接:http://acm.hdu.edu.cn/showproblem. ...

  4. 打印Fibonacci数列方法汇总(前20项,每行5个)

    NO.1 迭代法 标签:通俗.易懂 思路:先打印第一项.再在循环里面执行fib=fib1+fib2,把fib2赋给fib1,把fib赋给fib2,每行5个可使用if函数(循环次数对5取余). #inc ...

  5. es6入门3--箭头函数与形参等属性的拓展

    对函数拓展兴趣更大一点,优先看,前面字符串后面再说,那些API居多,会使用能记住部分就好. 一.函数参数可以使用默认值 1.默认值生效条件 在变量的解构赋值就提到了,函数参数可以使用默认值了.正常我们 ...

  6. python拓展1 week1-week5复习回顾

    知识内容: 1.python基础概念及基础语法 2.python基础数据类型 3.python模块相关 4.python函数相关 5.python面向对象相关 6.python文件处理相关 注:本节内 ...

  7. 欧几里得 & 拓展欧几里得算法 解说 (Euclid & Extend- Euclid Algorithm)

    欧几里得& 拓展欧几里得(Euclid & Extend-Euclid) 欧几里得算法(Euclid) 背景: 欧几里德算法又称辗转相除法.用于计算两个正整数a.b的最大公约数. -- ...

  8. C++对C的函数拓展

    一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...

  9. 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找

    今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...

随机推荐

  1. Intellij IDEA 使用Debug模式运行非常慢

    今天在用Debug的时候,idea运行非常慢,搜了一下有人说: 自己检查发现果然如此,把在方法前的断点去掉(移到方法体内),就正常了.

  2. Slickflow.NET 开源工作流引擎基础介绍(六)--模块化架构设计和实践

    前言:在集成Slickflow.NET 引擎组件过程中,引擎组件需要将用户,角色等资源数据读取进来,供引擎内部调用:而企业客户都是有自己的组织架构模型,在引入模块化架构设计后,引擎组件的集成性更加友好 ...

  3. Unity出现 error building player exception android (invocation failed)

    今天在编译Android的时候出现这个错误 error building player exception android (invocation failed) 百度谷歌之后,看到xuanyuson ...

  4. 利用ADO方式连接SQLServer2008出现的问题

    在利用ADO方式连接SQLServer2008的过程中遇到了很多问题,在网上也没有找到许多有利的信息,花了两天时间,终于把所有问题都搞定了.在这里和大家分享一下经验,希望后来者能少走弯路. 很多教程说 ...

  5. Java垃圾回收介绍(译)

    在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的.与C语言不同的是,在Java中开发者不需要专门为垃圾回收写代码.这是使Java流行的众多特征之一,也帮助了程序员写出了更好的 ...

  6. iOS开发 中的代理实现

    iOS开发 中的代理实现 关于今天为什么要发这篇文字的原因:今天在和同事聊天的时候他跟我说项目中给他的block有时候不太能看的懂,让我尽量用代理写,好吧心累了,那就先从写个代理demo,防止以后他看 ...

  7. Cocos开发中Visual Studio下libcurl库开发环境设置

    我们介绍一下win32中Visual Studio下libcurl库开发环境设置.Cocos2d-x引擎其实已经带有为Win32下访问libcurl库,Cocos2d-x 3.x中libcurl库文件 ...

  8. 为什么要使用jQuery?

    首先必须得了解为什么要学习JQuery,JQuery有哪些优点,当然是相对于传统的Javascript和DOM来说了,现在将JQuery的优势总结如下: 1,轻量级. JQuery非常小,压缩包只有1 ...

  9. (转)使用Visual Studio 2015开发Android 程序

    环境配置: 操作系统:win 7 64位 IDE:Visual Studio 2015 SDK:installer_r24.3.3-windows 安装前提: 编辑hosts文件(在附件可下载)因为安 ...

  10. iOS进阶——App生命周期

    State Description Not running The app has not been launched or was running but was terminated by the ...