拓展,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
拓展,Fibonacci螺旋的更多相关文章
- [zoj 3774]Power of Fibonacci 数论(二次剩余 拓展欧几里得 等比数列求和)
Power of Fibonacci Time Limit: 5 Seconds Memory Limit: 65536 KB In mathematics, Fibonacci numbe ...
- 算法——js(Fibonacci数列)
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家列昂纳多·斐波那契(Leonardoda Fibonacci[1] )以兔子繁殖为例子而引入,故又称为“兔子数列”,指 ...
- hdu3306 Another kind of Fibonacci【矩阵快速幂】
转载请注明出处:http://www.cnblogs.com/KirisameMarisa/p/4187670.html 题目链接:http://acm.hdu.edu.cn/showproblem. ...
- 打印Fibonacci数列方法汇总(前20项,每行5个)
NO.1 迭代法 标签:通俗.易懂 思路:先打印第一项.再在循环里面执行fib=fib1+fib2,把fib2赋给fib1,把fib赋给fib2,每行5个可使用if函数(循环次数对5取余). #inc ...
- es6入门3--箭头函数与形参等属性的拓展
对函数拓展兴趣更大一点,优先看,前面字符串后面再说,那些API居多,会使用能记住部分就好. 一.函数参数可以使用默认值 1.默认值生效条件 在变量的解构赋值就提到了,函数参数可以使用默认值了.正常我们 ...
- python拓展1 week1-week5复习回顾
知识内容: 1.python基础概念及基础语法 2.python基础数据类型 3.python模块相关 4.python函数相关 5.python面向对象相关 6.python文件处理相关 注:本节内 ...
- 欧几里得 & 拓展欧几里得算法 解说 (Euclid & Extend- Euclid Algorithm)
欧几里得& 拓展欧几里得(Euclid & Extend-Euclid) 欧几里得算法(Euclid) 背景: 欧几里德算法又称辗转相除法.用于计算两个正整数a.b的最大公约数. -- ...
- C++对C的函数拓展
一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...
- 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找
今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...
随机推荐
- Intellij IDEA 使用Debug模式运行非常慢
今天在用Debug的时候,idea运行非常慢,搜了一下有人说: 自己检查发现果然如此,把在方法前的断点去掉(移到方法体内),就正常了.
- Slickflow.NET 开源工作流引擎基础介绍(六)--模块化架构设计和实践
前言:在集成Slickflow.NET 引擎组件过程中,引擎组件需要将用户,角色等资源数据读取进来,供引擎内部调用:而企业客户都是有自己的组织架构模型,在引入模块化架构设计后,引擎组件的集成性更加友好 ...
- Unity出现 error building player exception android (invocation failed)
今天在编译Android的时候出现这个错误 error building player exception android (invocation failed) 百度谷歌之后,看到xuanyuson ...
- 利用ADO方式连接SQLServer2008出现的问题
在利用ADO方式连接SQLServer2008的过程中遇到了很多问题,在网上也没有找到许多有利的信息,花了两天时间,终于把所有问题都搞定了.在这里和大家分享一下经验,希望后来者能少走弯路. 很多教程说 ...
- Java垃圾回收介绍(译)
在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的.与C语言不同的是,在Java中开发者不需要专门为垃圾回收写代码.这是使Java流行的众多特征之一,也帮助了程序员写出了更好的 ...
- iOS开发 中的代理实现
iOS开发 中的代理实现 关于今天为什么要发这篇文字的原因:今天在和同事聊天的时候他跟我说项目中给他的block有时候不太能看的懂,让我尽量用代理写,好吧心累了,那就先从写个代理demo,防止以后他看 ...
- Cocos开发中Visual Studio下libcurl库开发环境设置
我们介绍一下win32中Visual Studio下libcurl库开发环境设置.Cocos2d-x引擎其实已经带有为Win32下访问libcurl库,Cocos2d-x 3.x中libcurl库文件 ...
- 为什么要使用jQuery?
首先必须得了解为什么要学习JQuery,JQuery有哪些优点,当然是相对于传统的Javascript和DOM来说了,现在将JQuery的优势总结如下: 1,轻量级. JQuery非常小,压缩包只有1 ...
- (转)使用Visual Studio 2015开发Android 程序
环境配置: 操作系统:win 7 64位 IDE:Visual Studio 2015 SDK:installer_r24.3.3-windows 安装前提: 编辑hosts文件(在附件可下载)因为安 ...
- iOS进阶——App生命周期
State Description Not running The app has not been launched or was running but was terminated by the ...