codewars Kata——Product of consecutive Fib numbers问题

思路与代码

思路其实很简单,我们已知斐波那契数列是给定两个边界条件(初始值),然后按照F(n+1)=F(n)+F(n-1)的方式递推得到,那么我可以从先给定0,1的初始条件,然后开始逐轮试探,每一轮我们先判断F(n)*F(n+1)<prod是否成立,只要成立,就更新当前的F(n)和F(n+1),并继续下一轮,这样的逐轮尝试进行到F(n)*F(n+1)≥prod为止,然后返回此时的F(n)、F(n+1)以及F(n)*F(n+1)==prod的bool值。

代码如下:

# -*- coding: utf-8 -*-
"""
codewars Kata: Product of consecutive Fib numbers

Created on Tue Nov 24 16:53:05 2020

@author: Pray
"""

def productFib(prod):
    a = 0
    b = 1
    while (a*b < prod):
        c = a
        a = b
        b = c + b
    return [a, b, prod == a*b]

提交代码后我看到了网上其他大神的解决方法,我发现代码可以进一步优化变得更为简洁,主要是可以在F(n)和F(n+1)更新那一步简化代码写法,改写为:

[a, b]=[b, a + b]

这样改写代码效果是一样的,但是整体代码书写会更为简洁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值