重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
可以看出来的是,该题可以用斐波那契数列解决。
成都创新互联公司长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为路南企业提供专业的成都网站设计、成都网站制作,路南网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
楼梯一共有n层,每次只能走1层或者2层,而要走到最终的n层。不是从n-1或者就是n-2来的。
F(1) = 1
F(2) = 2
F(n) = F(n-1) + F(n-2) (n=3)
这是递归写法,但是会导致栈溢出。在计算机中,函数的调用是通过栈进行实现的,如果递归调用的次数过多,就会导致栈溢出。
针对这种情况就要使用方法二,改成非递归函数。
将递归进行改写,实现循环就不会导致栈溢出
你好,很高兴为你解答。根据斐波那契数列F(n)=F(n-1)+F(n-2),当n=1和n=2时,F(n)=1,可以利用函数+if分支结构编写递归程序,求出斐波那契数列前10项。具体代码如下:
求斐波那契数列前10项
lambda不好写,写了前两个,把-2改为-7,改成-7后,我试过x必须大于4。-2时x可以从1开始
#递归
def power(n, x):
if abs(1/pow(n, x))abs(pow(10, -2)):
return 0#回归条件
else:
m = n + 1#递归因子
if(n%2==1):
return 1/pow(n, x)+power(m, x)#求和奇正
else:
return -1/pow(n, x)+power(m, x)#求和偶负
def power2(n, x):
sum = 0
while(1/pow(n,x)abs(pow(10, -2))):
if (n % 2 == 1):
sum+= 1 / pow(n, x)
else:
sum+=-1 / pow(n, x)
n += 1 # 递增
return sum
if __name__ == "__main__":
x = input("请输入幂数")
x = int(x)
n = 1
sum = power(n, x)
print(sum)
n=1
sum = power2(n, x)
print(sum)