拓展,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查找 ...
随机推荐
- B. Fox And Two Dots
B. Fox And Two Dots time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- ASP.NET MVC and jqGrid 学习笔记 6-增删改操作
程序结构: Member.cs CRUD.cshtml CRUD.js HomeController 一.Model public class Member { [Key] public int No ...
- Hill Climber and Random Walk
- linux用户及组管理
useradd 添加用户 passwd 修改用户密码 userdel 删除用户,默认不删除用户主目录和email,如果想删除可加 –r 参数 groupadd 添 ...
- Linux系统上安装mysql数据库
一:下载并且上传安装包到linux系统上 1:下载地址:http://dev.mysql.com/downloads/mysql/ 2:通过LeapFtp工具,将windows上的mysql安装包拷贝 ...
- GIT免密码PUSH
摘自:dudu 备忘,感谢! 1. 在Windows中添加一个HOME环境变量,值为%USERPROFILE%,如下图: 2. 在“开始>运行”中打开%Home%,新建一个名为“_netrc”的 ...
- Oracle procedure 基本语法
转自:http://lorry1113.javaeye.com/blog/513851 关键字: oracle 存储过程 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程 ...
- 最长非降/下降子序列问题(DP)(待续...)
注意:抽象成以下描述即为最长非降/下降子序列问题(一维状态) 问题描述:在一个无序的序列a1,a2,a3,a4…an里,找到一个最长的序列满足:(不要求连续) ai<=aj<=ak…< ...
- Linux free字段解析
下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free Output).例如: FO[2][1] = 24677460 FO[3][2 ...
- JavaScript基础笔记一
一.真假判断 真的:true.非零数字.非空字符串.非空对象 假的:false.数字零.空字符串.空对象.undefined 例: if(0){ alert(1) }else{ alert(2) } ...