首页 > 编程知识 正文

python递归求阶乘,python斐波那契数列函数

时间:2023-05-06 19:56:03 阅读:146268 作者:2726

主题1

已知有1、1、2、3、5、8、13、…这样的数列。 其规律从第三项开始,每个项都等于前两项之和,这个数列就是斐波那契数列。

要求符合斐波那契数列定律的第11项。

代码实现--非递归

effib_show(n ) :

a,b=0,1

while n 0:

a,b=b,a b

n -=1

返回a

print ('斐波那契数列第11项: {}'.format ) fib_show(11 ) )

代码实现--递归

effib_recursive(n ) :

if n==1 or n==2:

返回1

returnfib_recursive(n-1 ) fib_recursive (n-2 ) fib _ recursive

print ('斐波那契数列第11项: {}'.format ) FIB_recursive(11 ) ) )

主题2

要求符合斐波那契数列规律的前11项。

代码实现1

effib_show(n ) :

a,b=0,1

while n 0:

if n==1:

打印(b )是

else:

打印(b,end=',')

a,b=b,a b

n -=1

FIB_show(11 ) )。

代码实现2

effib_show(n ) :

if n==1:

return '1'

if n==2:

return ' 1,1 '

RES=[ 1,1 ]

forIinrange(2,n ) :

RES.append(RES(-1 ) RES(-2 ) ) )。

返回','.join([str(I ) for i in res]

print ('斐波那契数列前11项: {}'.format ) fib_show(11 ) )

主题3

对于斐波那契数列,1、1、2、3、5、8、13、……。 该数列中的数称为斐波那契数(Fibonacci数)。

如果给定数n,则必须是一个Fibonacci数。 可以在每一步中将当前数量n变为N-1或N 1。 将n转换为Fibonacci数至少需要几个步骤?

例如:

如果给出一个公式15,与其相邻的两个Fibonacci的数量分别为13和21,那么这个公式15成为13需要2步,成为21需要6步,所以这里最少需要2步。

实现构想

分别求出与指定数量相邻的2个Fibonacci数: a和b

分别求出指定的数量和a与b的距离步数left_step和right_step

比较left_step和right_step时,数值最小是所需的最小步数

代码实现

deffib_step(num ) :

a,b=0,1

min_step=0

while True:

当#b大于输入的数字num时,a是上一次循环的b,此时a一定小于num

if num=a and num=b:

left_step=num - a

right_step=b - num

if left_step right_step:

min_step=left_step

else:

min_step=right_step

布雷克

a,b=b,a b

return min_step

要将print('15更改为Fibonacci数,至少需要)步(.format(FIB_step(15 ) ) )

译文: https://www.cn blogs.com/wintest/p/13768793.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。