标签: fibonacci

Python:这个Fibonacci函数有什么问题?

我试着编写一个简单的python函数,它应该返回一些指定最大值的fib数列表.但是我收到了这个错误.我似乎无法找出我做错了什么.

def fib(a,b,n):
    f = a+b
    if (f > n):
        return []
    return [f].extend(fib(b,f,n))

>>>fib(0,1,10)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "lvl2.py", line 35, in fib
    return [f].extend(fib(b,f,n))
  File "lvl2.py", line 35, in fib
    return [f].extend(fib(b,f,n))
  File "lvl2.py", line 35, in fib
    return [f].extend(fib(b,f,n))
  File "lvl2.py", line 35, in fib
    return [f].extend(fib(b,f,n))
TypeError: 'NoneType' object is not iterable
Run Code Online (Sandbox Code Playgroud)

python iterator fibonacci

0
推荐指数
1
解决办法
477
查看次数

C++错误,添加偶数

可能重复:
偶数斐波纳契数的总和

目前,我正在做一些Project Euler问题,我遇到了第二个问题.

通过考虑Fibonacci序列中的值不超过四百万的项,找到偶数项的总和.

我在C++中正在解决这个问题,我认为我的代码完全正常,因为在某一点上,一切都是正确的,但随后,一切都在失控......代码:

#include <iostream>
using namespace::std;
int main() {
    int a = 1;
    int b = 1;
    int evsum = 0;
    while (a < 4000000 and b < 4000000) {
        a = a + b;
        b = a + b;
        if (a % 2 == 0)
            evsum += evsum + a;
        if (b % 2 == 0)
            evsum = evsum + b;
        cout << a << endl;
        cout << b << endl;
        cout << evsum << …
Run Code Online (Sandbox Code Playgroud)

c++ math fibonacci

0
推荐指数
1
解决办法
331
查看次数

根据"Fibonacci序列"找到答案

请查看以下代码

package Euler;

import java.util.ArrayList;
import java.util.List;

public class Problem2
{
    public static void main(String[]args)
    {
        int firstNumber=1;
        int secondNumber=2;
        int thirdNumber = 0;

        int sum = 0;

        List array = new ArrayList();

        while(true)
        {

            if(thirdNumber>=400000)
            {
                break;
            }
            else
            {
                thirdNumber = firstNumber+secondNumber;
                System.out.println(thirdNumber);


                 if(thirdNumber%2==0)
                {
                    array.add(thirdNumber);
                }

                firstNumber = secondNumber;
                secondNumber = thirdNumber;
            }
        }

        for( int i=0;i<array.size();i++)
        {
            int num = Integer.parseInt(array.get(i).toString());

            sum = sum+num;
        }

        System.out.println("The Sum is: "+sum);
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我试图从Project Euler 解决这个问题,无论如何这是问题所在. …

java math arraylist fibonacci

0
推荐指数
1
解决办法
292
查看次数

找到第9个斐波纳契素数

我不确定这是否是正确的问题,但我已经遇到了代码问题.我试图找到第9个斐波纳契数,这是一个素数,但我遇到了问题.首先,检查数字是否为Prime的函数返回单个数字素数(2,3,5,7)的无.接下来,我认为我正在寻找的值是514229,如此处所示,但我的程序显示给出的值为17711,因为第9个Fibonacci素数不正确.我的代码发布在下面:

def isPrime(n):


    n = abs(int(n))

   if n < 2:
        return False


    elif n == 2:
        return True


    elif not n & 1:
        return False

    else:
        for x in range(3, n/2):
            if n % x == 0:
                return False
            return True


def chkFibonacci():

    num1 = 1
    num2 = 1
    mySum = 0
    ctr = 0
    choice = 'n'

    while (choice != 'y'):
        mySum = num1+num2
        #print mySum
        if (isPrime(mySum)== True):
            ctr = ctr + 1
            print mySum
            if …
Run Code Online (Sandbox Code Playgroud)

python fibonacci python-3.x

0
推荐指数
1
解决办法
817
查看次数

为什么我的Python Fibonacci序列不能正常工作?[项目欧拉#25]

所以我最近一直在研究Euler项目的问题,而且一切都相当顺利.直到我击中#25:

"Fibonacci序列中包含1000个数字的第一项是什么?"

我制作的节目(以下):

def main():
    x = 0
    y = 1
    z = 0
    while len(str(z)) != 1000:
        z = x + y
        x = y
        y = z
    print z
main()
Run Code Online (Sandbox Code Playgroud)

应该给我正确答案,但我只能得到:"

1070066266382758936764980584457396885083683896632151665013235203375314520604694040621889147582489792657804694888177591957484336466672569959512996030461262748092482186144069433051234774442750273781753087579391666192149259186759553966422837148943113074699503439547001985432609723067290192870526447243726117715821825548491120525013201478612965931381792235559657452039506137551467837543229119602129934048260706175397706847068202895486902666185435124521900369480641357447470911707619766945691070098024393439617474103736912503231365532164773697023167755051595173518460579954919410967778373229665796581646513903488154256310184224190259846088000110186255550245493937113651657039447629584714548523425950428582425306083544435428212611008992863795048006894330309773217834864543113205765659868456288616808718693835297350643986297640660000723562917905207051164077614812491885830945940566688339109350944456576357666151619317753792891661581327159616877487983821820492520348473874384736771934512787029218636250627816

"

这是错误的答案.所以我正在使用斐波那契序列来生成错误的1000位数字,如何...任何人都可以帮我修复它吗?我几乎没有想法.

python fibonacci

0
推荐指数
1
解决办法
155
查看次数

最后3个数字的Fibbonaci样序列

是否存在非递归方式,我可以通过添加最后3个数字来制作"斐波那契"序列?

这是我尝试这样做的递归方式.

def fib3(n):
    if n < 3:
        return 1
    else:
        return fib3(n-1) + fib3(n-2) + fib3(n-3)
Run Code Online (Sandbox Code Playgroud)

回报 1+1+1+3+5+9+17...+(n-1) + (n-2) + (n-3)

任何帮助将不胜感激.

提前致谢

python math fibonacci

0
推荐指数
1
解决办法
256
查看次数

获取haskell中的每个fibbonacci值

我正在学习haskell,我有以下代码:

fib a b =
  a : fib b (a + b)

findFibSum =
  sum [x | x <- fib 1 2, mod x 2 == 0 && x < 100]
Run Code Online (Sandbox Code Playgroud)

如果我findFibSum没有发生任何事情,它只是坐在那里.不fib应该评估并返回每个项目?我猜这与懒惰评估有关.

如果我先拨打电话take,请findFibSum接受以下列表:

findFibSum $ take 100 $ fib 1 2
Run Code Online (Sandbox Code Playgroud)

它起作用了.如何制作它以便我可以检索并检查每个项目?我可以通过批量使用来逃避,take但我想首先理解这一点.

UPDATE

感谢@amalloy我终于得到了它:

findFibSum xs =
  sum [x | x <- takeWhile (<4000000) xs, mod x 2 == 0]
Run Code Online (Sandbox Code Playgroud)

takeWhile 确保它一旦达到> = 4m就停止从fib中检索值.

haskell fibonacci

0
推荐指数
1
解决办法
80
查看次数

为什么这段代码会打印垃圾?

这是一个带缓存的简单递归方法,因此不会一遍又一遍地重新计算数字.我肯定看到它有效,但现在它被打破并打印出垃圾.我已经尝试恢复工作版本,但是找不到任何可能会破坏它的差异.

它为什么停止工作?

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int Fibonacci_vector(int n) {
    static vector<int> cache(2, 1);
    cache.reserve(n);
    if (cache[n] == 0) {
        cache[n] = Fibonacci_vector(n-1) + Fibonacci_vector(n-2);
    }
    return cache[n];
}

int main() {
    cout << Fibonacci_vector(4);
}
Run Code Online (Sandbox Code Playgroud)

更新 Jeez,我是如此愚蠢,只是伤害.我已经改变了if (n > cache.size()) { cache.resize(n); }cache.reserve(n);当然它打破了一切!伙计们,对不起我的愚蠢.

c++ recursion caching vector fibonacci

0
推荐指数
1
解决办法
86
查看次数

为什么在javascript中计算fibonacci的速度比haskell快?

正如您在下面的示例中所看到的,javascript/node比haskell快得多.
但是haskell是基于C编译的.在这个例子中,你看到C是最快的.为什么haskell比较慢?

由节点执行的JS:

function fib(n) {
    if ( n==0 || n==1 )
        return 1;

    return fib(n-2)+fib(n-1);
}
console.log(fib(30));
Run Code Online (Sandbox Code Playgroud)

$ time node fib.js
1346269
real 0m0,045s
user 0m0,040s
sys 0m0,004s

哈斯克尔:

fib 0 = 1
fib 1 = 1
fib n = fib (n-1) + fib (n-2)

main = print (fib 30)
Run Code Online (Sandbox Code Playgroud)

$ ghc -o fibh fib.hs
$ time ./fibh
1346269
real 0m0,178s
user 0m0,168s
sys 0m0,000s

C:

#include <stdio.h>

int fib(int n) {
    if (n == 0 || n == …
Run Code Online (Sandbox Code Playgroud)

javascript c performance haskell fibonacci

0
推荐指数
1
解决办法
261
查看次数

每次都出乎意料的结果

我一直在尝试在线性时间内实现斐波那契数列。每次运行程序时,我总是得到奇怪的结果。我是C ++的新手。

int fib1(int n) {

    int arr[n];
    arr[0] = 0;
    arr[1] = 1;

    for (int i = 2; i < n; i++) {
        arr[i] = arr[i - 1] + arr[i - 2];

    }

    return arr[n];
}

int main() {

    int x = fib1(3);
    cout << x << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

预期的结果是:2

我得到的结果是:4199748

我在哪里弄糟?

c++ fibonacci

0
推荐指数
1
解决办法
81
查看次数