问题标签 [fibonacci]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
36 回答
6851 浏览

language-agnostic - 斐波那契代码高尔夫

以尽可能少的字符生成斐波那契数列。任何语言都可以,除了您使用一个运算符 定义的语言f,它会打印斐波那契数。

起点:Haskell中的25 14 个字符

f=0:1:zipWith(+)f(tail f)

0 投票
5 回答
1922 浏览

delphi - Delphi Prism/Oxygene 中的 Lambda 表达式

我一直在尝试在 Oxygene 中使用 Lambda 表达式。非常简单的递归 lambda 表达式来计算斐波那契数:

当我运行此代码时,我得到一个 nullreferenceexception。关于我做错了什么的任何想法?

0 投票
12 回答
373030 浏览

time-complexity - 斐波那契数列的计算复杂度

我了解 Big-O 表示法,但我不知道如何为许多函数计算它。特别是,我一直试图弄清楚斐波那契数列的原始版本的计算复杂性:

斐波那契数列的计算复杂度是多少,它是如何计算的?

0 投票
4 回答
4192 浏览

c# - 递归调用同一个方法两次

在斐波那契数列中,我见过递归调用相同方法两次的常规实现:

现在这种方法不是我所看到的完全复制或解决问题的正确方法,但我已经看到两种方法像上面一样加在一起。所以该方法不是递归调用的,而是递归调用两次。在 C# 中编写这样的代码时究竟会发生什么?这两种方法是否在单独的线程上运行?引擎盖下发生了什么?

0 投票
10 回答
5062 浏览

javascript - Javascript 斐波那契第 n 项优化

最近我对算法产生了兴趣,斐波那契数列因其简单性而引起了我的注意。

我已经设法在 javascript 中将一些东西放在一起,在阅读网络上的大量信息后,在不到 15 毫秒的时间内计算斐波那契数列中的第 n 项。它上升到 1476...1477 是无穷大,1478 是 NaN(根据 javascript!)

我为代码本身感到非常自豪,除了它是一个彻头彻尾的怪物。

所以这是我的问题:A)有没有更快的方法来计算序列?B)是否有更快/更小的方法来乘以两个矩阵?

这是代码:

矩阵函数有两个参数:a 和 b,并返回 a*b,其中 a 和 b 是 2x2 数组。哦,顺便说一句,发生了一件神奇的事情……我正在将 Strassen 算法转换为 JS 数组表示法,它在我第一次尝试时就奏效了!太棒了,对吧?:P

如果您设法找到一种更简单的方法来做到这一点,请提前致谢。

0 投票
47 回答
719350 浏览

python - 如何编写斐波那契数列?

我最初对程序进行了错误的编码。我没有返回一个范围之间的斐波那契数(即 startNumber 1,endNumber 20 应该 = 仅那些介于 1 和 20 之间的数字),而是为程序编写了显示范围之间的所有斐波那契数(即 startNumber 1,endNumber 20显示 = 前 20 个斐波那契数)。我以为我有一个万无一失的代码。我也不明白为什么会这样。

有人在我的第二部分中指出(由于重复而被关闭 - https://stackoverflow.com/questions/504193/how-to-write-the-fibonacci-sequence-in-python-part-ii)我需要使用 while 循环通过生成器传递 startNumber 和 endNumber。有人可以指点我如何做到这一点吗?欢迎任何帮助。


我是一名学习程序员,我遇到了一些混乱。我被要求编写一个程序,该程序将通过用户输入的开始数字和结束数字来计算和显示斐波那契数列(即 startNumber = 20 endNumber = 100,它将只显示该范围之间的数字)。诀窍是包容性地使用它(我不知道如何在 Python 中做到这一点?-我假设这意味着使用包容性范围?)。

到目前为止,我没有实际的编码,而是:

  • 将 Fib 序列公式写入无穷大
  • 仅从 Fib 序列显示 startNumber 到 endNumber。

我不知道从哪里开始,我正在寻求想法或洞察如何写这个。我也尝试过编写 Fib 序列论坛,但我也迷失了方向。

0 投票
8 回答
7698 浏览

c++ - 为什么 (int)55 == 54 在 C++ 中?

所以我正在学习C++。我已经完成了“C++ 编程语言”和“Effective C++”,并且正在运行 Project Euler。问题 1...邓佐。问题2...不是那么多。我在 VS2008 上的 Win32 控制台应用程序上工作。

低于 400 万的斐波那契数列的所有偶数项的总和是多少?

它不起作用,所以我减少了一个 100 个测试用例......

这是我写的...

这是输出...

欧拉计划问题 2:

斐波那契数列中的每个新项都是通过添加前两项来生成的。从 1 和 2 开始,前 10 个术语将是:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

求序列中所有不超过四百万的偶数项之和。

0 0 0
1 1 1
1 1 1
2 2 0
3 3 1
5 5 1
8 8 0
13 13 1
21 21 1
34 34 0
55 54 0
89 89 1
答案:99

所以我有三列调试代码...从生成函数返回的数字,(int)generatedNumber 和 (int)generatedNumber % 2

所以在第 11 个学期,我们有

55,54,0

为什么 (int)55 = 54?

0 投票
14 回答
5226 浏览

lisp - 解决斐波那契的 lisp 方法

我想尝试学习 Lisp,但很快就放弃了。我想我会再试一次。我正在研究欧拉计划中的问题 2——找出所有低于 400 万的偶数斐波那契数的总和。

我编写了以下代码,它可以工作,但很丑陋。其中最主要的是它非常慢 - 因为它一直在进行天真的递归。

当我用 Python 编写这个程序时,我在计算并且从不重新计算数字时建立了一个列表。我知道我可以在这里(以某种方式)做到这一点,但这似乎不符合 lisp 和函数式编程的精神。我在 #3 之后放弃了,当我达到递归深度限制并且不得不重写我的代码以使用循环而不是递归时。

所以我想我的问题是:

  1. 解决这个问题的“正确、笨拙的方式”是什么?
  2. 你如何协调递归和“计算一切”的概念与计算一切的实际限制?
  3. 除了 The Little Schemer 和 Project Euler 之外,还有什么学习 lisp 的建议吗?

这是我的代码:

0 投票
6 回答
25861 浏览

c - 用 fork() 打印斐波那契

我遇到的问题是,例如当用户输入 7 时,显示屏会显示:

我似乎无法弄清楚如何修复 11 以及为什么它在序列中显示这么多数字!任何人都可以帮忙吗?

序列号将在命令行中提供。例如,如果提供了 5,则斐波那契数列中的前五个数字将由子进程输出。因为父进程和子进程都有自己的数据副本,所以子进程必须输出序列。让父进程调用 wait() 调用以等待子进程完成,然后再退出程序。执行必要的错误检查以确保在命令行上传递非负数。

0 投票
4 回答
16311 浏览

python - 如何从 range() 函数中获取最后一个数字?

有没有办法从range()函数中获取最后一个数字?我需要获取斐波那契数列中前 20 个术语的最后一个数字,还是应该使用列表而不是range()