文章目录一、递归方法:二、鲤鱼御姐数列简介:特性一:特性二:两种方法运行时间比较:
3358www.Sina.com/一、递归方法:/ 递归方法是逐步分解直到得到能够解决问题的简单问题。
通常与直接或间接的酒吧用本身有关。
例如,计算列表(1、3、5、7、9、13 )中各元素的和。
直接或间接使用sum (调用函数本身:
python的实现如下。
In[1]
deflistsum(a ) : if len(a ) a )==1: return a[0] #如果列表中只有一个元素,则a[0]else:returna[0]listsum ) a [ a ]
Out[2]:
38 `
/二、鲤御姐数列简介:/ 鲤御姐数列是最常见的问题,也称‘兔数列/黄金分割数列’。
/
1
任何一个数都是前两个数之和。
例如:
于是计算鲤鱼姐姐数列的第一种方法是把数字列的最后两个元素加起来,得到新的数字并插入数列的末尾。
鲤鱼姐姐的矩阵解法:
特性一:
2
极限条件下,相邻两种元素的商等于一个常数。 也就是说
特性二:
第一个:
通过设定数组。
a=[ 0,1 ]
接下来要插入的数据为“a【-1】a【-2】”。
a.append(a(-1 ) a(-2 ) ) ) ) )。
继续循环。 循环y次可以得到y个新数字。
最后得到的鲤鱼姐姐数列的数字个数为n=y 2。
循环次数y可以由用户希望的鲤鱼姐姐数字的个数n定义。
y=n - 2
输入【1】:
定义deffibS1(n ) : #鲤鱼的姐姐函数a=[0] #。 #声明a是数组if n=0:打印(“错误”)。 #n不可能=0else : IFN 1: a=[ 0,1 ] foriinrange ) ),0else:ifn13:a,即数组a中n-2个鲤鱼姐姐数字a.append(a(-2 ) )
FIBS1(10 )输出【2】:
[ 0,1,1,2,3,5,8,13,21,34 ]
第二个:
事先定义数组内要素的个数,将各自的值定为前两个个数之和。
输入【1】:
deffibs2(n ) : #n ) n中所需的鲤鱼姐姐数f=[0] * n #定义了包含n个0的数组if n=0: print (“错误”)。 (n=0else3360ifn=2:f )1)=1#1) forIinrange(2,n ) :f ) I )=f(I-1 ) f ) I-2 ) ' ' f (2)=f )1) 三个鲤鱼姐姐的数字f[3]=f[2] f[1]=2,此时f=[ 0,1,1,2 ]; 四条鲤鱼姐姐的数字f[n-1]=f[n-2] f[n-1]; 鲤鱼姐姐n个数字' ' ' return f输入【2】:
FIBS2(10 )输出【2】:
[ 0,1,1,2,3,5,8,13,21,34 ]
3
4
输入【1】:
%timeitfibS1(100 ) timeitfibs2) 100 )输出【1】: 26.2 s736 nsperloop (meanSTD.dev.of7runs,10000 loops each ) 30。
通过将复杂的计算过程封装并保存在一个函数中,可以避免编写重复的代码。 需要再次计算的时候只需要调用。