标签: fibonacci

Fibonacci Haskell实现的问题

刚刚开始重新学习Haskell(在大学做过,但忘了大部分)并且认为我会实现一个斐波那契函数来开始.但是,我不断得到一个stackoverflow,即使是非常小的n.

有人能发现我的功能有什么问题吗?

fib :: Integer -> Integer
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n+1)
Run Code Online (Sandbox Code Playgroud)

stack-overflow haskell fibonacci

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

使用while循环计算前n个Fibonacci数的程序

当我运行它并输入一个数字时,它只是不停地重复它.例如,如果我放3,它会做3 3 3 3 3但不停止

int main()
{
int current=0, prev=1, prev2=1, fibnum;
cout << "Enter the number of Fibonacci numbers to compute: ";
cin >> fibnum;
if (fibnum <=0)
{
    cout << "Error: Enter a positive number: ";
}
while (fibnum > 0){
    current = prev + prev2;
    prev = prev2;
    prev2 = current;
    current++;

    cout << "," << fibnum;
    cout << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ putty fibonacci while-loop

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

所有偶数Fibonacci数字代码的总和永远不会停止 - Java

这是来自项目Euler,问题2.我写了下面看似无辜的代码:

public class FibonacciEven {
    public static void main(String[] stuff) {
        long sum = 0;
        int i = 0;
        while(fib(i) <= 40) {
            boolean even = fib(i) % 2 == 0;
            if(even) {
                sum += fib(i);
            }
            else {
                continue;
            }
            i++;
        }
        System.out.println(sum);
    }
    public static long fib(int n) {
        long prev1 = 0;
        long prev2 = 1;
        for(int i = 0; i < n; i++) {
            long savePrev1 = prev1;
            prev1 = prev2;
            prev2 = savePrev1 + prev2; …
Run Code Online (Sandbox Code Playgroud)

java fibonacci while-loop

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

需要帮助使用C++清理斐波纳契序列

我仍然是C++的新手,并决定制作斐波那契序列.它起作用了(哇!)但它不能像我想的那样好用.

我的意思是说,例如我告诉我的程序计算我将获得的序列的前10个术语

"0,1,1",然后我必须按下每个附加数字的输入,直到它达到10,在这种情况下程序返回0并结束.

我如何让程序显示我想要的所有数字,而无需每增加一个输入?

这是我的脚本:

#include <iostream>
using namespace std;

int main()
{
    int FibNum;
    cout << "How many numbers of the Fibonacci Sequence would you like to see? \n\n";
    cin>> FibNum;
    cin.ignore();
    int a = 0;
    int b = 1;
    int c = 2;
    cout << "Fibonacci Sequence up to " << FibNum << " terms.\n\n";
    cout << a << "\n" << b << "\n";

    for (int c = 2; c < FibNum; c++) {
        int d = a …
Run Code Online (Sandbox Code Playgroud)

c++ fibonacci

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

C++中的Fibonacci系列不能超过47个数字

我设计了这个程序,可以打印斐波那契系列(series[i] = series[i-1] + series[i-2])但我不能得到超过47个数字,因为第48个它们变成负数和奇数(我认为这发生在列表超出范围或项目为空时):

#include <iostream>
#include <vector>

using namespace std;

int main ()
{
    int length;
    string again = "";
    do {
        cout << "Enter the length you want in your sequence: ";
        cin >> length;
        vector<int> series(length);
        for (int n=0; n<=1; n++) series[n] = n;
        for (int number=2; number<=length; number++) {
            series[number] = series[number-1] + series[number-2];
        }
        for (int i=0; i<length; i++) cout << series[i] << " ";
        cout << endl << "Do it again …
Run Code Online (Sandbox Code Playgroud)

c++ fibonacci

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

MIPS递归斐波那契数列

我在MIPS中递归处理堆栈时遇到麻烦。我明白了,但是我的程序没有按照我的意思做出反应。

我的目标是将用户输入作为n并在n处打印斐波那契数。到目前为止,我所拥有的如下。

(我很确定问题出在fib函数中数字的实际计算中。)谢谢您的帮助!:)

.text
main:
# Prompt user to input non-negative number
la $a0,prompt
li $v0,4
syscall
li $v0,5
syscall
move $t2,$v0


# Call function to get fibonnacci #n
move $a0,$t2
move $v0,$t2
jal fib
move $t3,$v0

# Output message and n
la $a0,result
li $v0,4
syscall
move $a0,$t2
li $v0,1
syscall
la $a0,result2
li $v0,4
syscall
move $a0,$t3
li $v0,1
syscall
la $a0,endl
li $v0,4
syscall

# End program
li $v0,10
syscall

fib:
# Compute and return fibonacci number …
Run Code Online (Sandbox Code Playgroud)

recursion mips fibonacci

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

用c ++或c语言打印fibo大数字

我使用recursion.But为show fibonacci系列编写此代码.对于n> 43,它没有正确显示(例如:对于n = 100显示:-980107325).

#include<stdio.h>
#include<conio.h>

void fibonacciSeries(int);

void fibonacciSeries(int n)
{
static long d = 0, e = 1;
long c;
if (n>1)
{
    c = d + e;
    d = e;
    e = c;
    printf("%d \n", c);
    fibonacciSeries(n - 1);
}
}

int main()
{
long a, n;
long long i = 0, j = 1, f;
printf("How many number you want to print in the fibonnaci series :\n");
scanf("%d", &n);

printf("\nFibonacci Series: ");
printf("%d", 0);
fibonacciSeries(n); …
Run Code Online (Sandbox Code Playgroud)

c c++ recursion fibonacci

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

在Java中使用线性递归的三重Fibonacci

我试图代码的线性递归三重斐波那契(意味着三重斐波那契数由斐波那契数启发但具有三个预定值开始,每个值之后作为前述三个值的总和.)

其中一个约束基本上是使它尾递归,但到目前为止我没有任何机会使用这段代码:

public class TailRecursiveOddonacci {

public long tailOddonacci(int n) {
    if (n <= 3) {
        return 1;
    }
    return tailOddonacciRecursion(0, 1, 2, n);
}

private long tailOddonacciRecursion(int a, int b, int c, int count) {
    if(count <= 0) { 
        return a;
    }
    return tailOddonacciRecursion(b, a+b, a+b+c, count-1);
}
}
Run Code Online (Sandbox Code Playgroud)

我很难找到它为什么不起作用......

编辑:在这种情况下,n是一个非负整数.因此,例如,10应该返回105,或者5应该返回5.

java fibonacci

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

与Rust相关的惯用语匹配

我是Rust的新手,但作为Haskell的粉丝,我非常感谢matchRust的工作方式.现在我面临着一个罕见的情况,我确实需要堕落 - 从某种意义上说,我希望所有匹配的几个重叠的案例都能被执行.这有效:

fn options(stairs: i32) -> i32 {
    if stairs == 0 {
        return 1;
    }
    let mut count: i32 = 0;
    if stairs >= 1 {
        count += options(stairs - 1);
    }
    if stairs >= 2 {
        count += options(stairs - 2);
    }
    if stairs >= 3 {
        count += options(stairs - 3);
    }
    count
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,这是否是Rust中的惯用语或是否有更好的方法.

编辑:上下文是Cracking the Coding Interview的一个问题:"一个孩子正在爬楼梯,有n个步骤,可以一步跳1步,2步或3步.实施一种方法来计算孩子爬楼梯的可能方式."

idioms fibonacci fall-through rust

0
推荐指数
2
解决办法
2217
查看次数

懒惰评估斐波那契函数

我在Haskell中编写了下面的函数,我不太清楚为什么它不适用于懒惰的评估.

infFib :: [Integer]
infFib = infFib' []
    where 
        infFib' [] = infFib' [0,1]
        infFib' (xs) = infFib' (xs ++ [(foldr (\a b -> a+b) 0 (take 2 (reverse xs)))])
Run Code Online (Sandbox Code Playgroud)

recursion haskell fibonacci

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

标签 统计

fibonacci ×10

c++ ×4

recursion ×3

haskell ×2

java ×2

while-loop ×2

c ×1

fall-through ×1

idioms ×1

mips ×1

putty ×1

rust ×1

stack-overflow ×1