javascript - 如何产生一个1000以内的斐波那契序列?
迷茫
迷茫 2017-04-10 16:28:47
0
11
812

正在写一网站上的Javascript挑战题:给定一个数n,编写函数返回<=n的所有斐波那契数。

Example:
    Fibonacci(4) -> 1, 1, 2, 3
    Fibonacci(5) -> 1, 1, 2, 3, 5
    Fibonacci(7) -> 1, 1, 2, 3, 5

如何产生Fibonacci数我会,只需给出思路即可,代码我自己实现。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답(11)
巴扎黑

既然会产生F数,那为什么不会做这一题呢?只要在for循环里判断一下有没有达到n即可,没达到就继续产生,然后把产生的F数存入一个数组,达到了就跳出循环并返回该数组

迷茫
function fib($n)
{
    $fn_1 = 1;
    $fn_2 = 1;
    $fib = 1;
    $res = array($fn_1,$fn_2);
    while (true) 
    {
        $fn_1 = $fn_2;
        $fn_2 = $fib;

        $fib = $fn_1+$fn_2;
        if ($fib < $n) 
        {
            $res[] = $fib;
        }
        else
        {
            break;
        }
    }
    return $res;
}

$n = 15;
print_r(fib($n));
echo PHP_EOL;
大家讲道理
生成小于某数的序列
def fibSequenceLessThanNum(num):
    a, b = 0, 1
    result = []
    while a < num:
        result.append(a)
        a, b = b, a + b
    return result
    
fibSeqLessThanNum(1000)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]
>>> 
阿神
"""
之前题目理解错误,修改下答案. 方法一:
"""
def fib_list_generate(n=0):
    fib_number_first, fib_number_second = 1, 1
    while (fib_number_first < n):
        yield fib_number_first
        fib_number_first, fib_number_second = fib_number_second, fib_number_first + fib_number_second


for i in fib_list_generate(1000):
    print i
    
"""
之前题目理解错误,修改下答案. 方法二:
"""
def fib_list_generate_001(n=0):
    fib_list = []
    fib_number_first, fib_number_second = 1, 1
    while(fib_number_first < n):
        fib_list.append(fib_number_first)
        fib_number_first, fib_number_second = fib_number_second, fib_number_first + fib_number_second
    return  fib_list


print fib_list_generate_001(1000)
黄舟

一个个加上去啊,超过n就停

左手右手慢动作

1000位以后,那数得多大呀,循环什么的效率都低了吧

洪涛

用迭代:f(n)=f(n-1)+f(n-2)

左手右手慢动作
function fibonacci(n) {
    var i = 1, j = 1;
    var arr = [i, j];
    var last = 1;

    while (true) {
        last = i + j;
        if(last>n)break;
        i = j;
        j = last;
        arr.push(last);
    }
    console.log(arr.join(','));
}

fibonacci(1000);//1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987
Ty80

先说斐波那契数:

     arr[i] = arr[i-1] + arr[i-2],

JavaScript中的循环判断是否小于n,在循环体内对i进行判断i<2的情况,后面你懂的。。

黄舟

RTFM

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!