拓展,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查找 ...
随机推荐
- 树形菜单 jsTree 使用方法
jsTree版本:3.0.4 在ASP.NET MVC中使用jsTree Model: public class Department { public int Id { get; set; } pu ...
- ASP.NET MVC and jqGrid 学习笔记 2-如何从本地获得数据
上回说到jqgrid的基本配置,同时演示了显示数据的一种方法——datatype: "local".这种方法是从本地获取的,确切地说是在前端页面的javascript里写的硬编码. ...
- Objective-C ,ios,iphone开发基础:3分钟教你做一个iphone手机浏览器
第一步:新建一个Single View工程: 第二步:新建好工程,关闭arc. 第三步:拖放一个Text Field 一个UIButton 和一个 UIWebView . Text Field 的ti ...
- Android 自学之选项卡TabHost
选项卡(TabHost)是一种非常实用的组件,TabHost可以很方便地在窗口上放置多个标签页,每个标签页相当于获得了一个与外部容器相同大小的组建摆放区域.通过这种方式,就可以在一个容器中放置更多组件 ...
- LeetCode 264
Ugly Number II Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose ...
- 关于hadoop2.4.1伪分布式系统的搭建
1.准备Linux环境 1.0点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip ...
- MicrosoftActiveSync 安装
如何将自己的程序放到开发板中呢,一般都有三种方法:U盘.SD卡.USB同步,前两者其实差不多,很方便快捷,而笔者在进行USB同步的时候,还是发现了一些问题,下面我来介绍一下USB同步方法的相关知识. ...
- CSS实现标题超出宽度省略号来表示
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- EF中"实体类型 XXXXX 不是当前上下文的模型的一部分。" 原因
用T4模版生成的数据库映射文件.cs对应不上数据库的字段而引起的错误(我是修改了cs里面的属性),只要根据数据库字段,修改回来就OK.问题就解决了.
- 强大的数据恢复软件--EasyRecovery专业版
EasyRecovery 是世界著名数据恢复公司 Ontrack 的技术杰作,它是一个威力非常强大的硬盘数据恢复工具.能够帮你恢复丢失的数据以及重建文件系统.EasyRecovery不会向你的原始驱动 ...