python中的斐波纳契序列程序工作正常,输入0除外

时间:2016-07-04 13:52:24

标签: python fibonacci

除输入n = 0外,该程序显示正确的输出。

catch

当我输入n = 0时,它显示以下错误:

def fib(n):
    f=list()
    i=0
    while(i<=n):
        f.append(i)
        i+=1
    f[0]=0
    f[1]=1
    for i in range(2,n+1):
        f[i]=f[i-1]+f[i-2]
        i+=1
    return f[n]
n=int(input())
print(fib(n))

5 个答案:

答案 0 :(得分:1)

由于在while循环期间初始化这些元素,因此中间不需要两行。错误来自于describe("A user gets registered", function () { it('should create a SINGLE user on /api/register POST', function (done) { //calling REGISTER api server .post('/api/register') .send({ name: "John Doe", username: "john", password: "open" }) .expect("Content-type", /json/) .expect(200) .end(function (err, res) { var data = { "name": "John Doe" }; res.status.should.equal(200); res.body.should.equal(data); done(); }); }); }); ,你只是在列表中添加了一个元素。之后,改变第一和第二元素的价值。没有第二个元素。

router.post('/', function (req, res) {
    var data = {name: 'John Doe'};
    res.status(200).json(data);
});

module.exports = router;

答案 1 :(得分:0)

要么鸭子输入它:

def fib(n):
    if n in [0, 1]:
        return n
    .
    .

或者分别将f[0] = 0f[1] = 1更改为f.append(0)f.append(1)

答案 2 :(得分:0)

你不需要这两行。

f[0]=0
f[1]=1

删除它们,一切都会有效。

答案 3 :(得分:0)

对代码的更正:

def fib(n):
    f=list()
    i=0
    while(i<=n):
        f.append(i)
        i+=1
    # HERE WAS THE MISTAKE
    f.append(0)
    f.append(1)
    for i in range(2,n+1):
        f[i]=f[i-1]+f[i-2]
        i+=1
    return f[n]

输出:

>>> fib(0)
0
>>> fib(1)
1
>>> fib(2)
1
>>> fib(3)
2
>>> fib(4)
3
>>> fib(5)
5
>>> fib(6)
8
>>> fib(7)
13
>>> fib(8)
21
>>> fib(9)
34
...
>>> fib(30)
832040

答案 4 :(得分:0)

代码中的问题是循环没有创建索引为1的项,因此在循环之后您可以更改此项,因为它不存在。 我会建议&#34;硬编码&#34;开始时为0和1,然后使用递归来定义fibonacci函数

def fib(n):
    if 0<=n<2: return n
    else: return fib(n-2)+fib(n-1)

然后只需致电

fib(i)

使用列表理解获取第i个项目或列出所有x斐波那契值

[fib(i) for i in range(x)]