我保证这不是功课.我只是一个好奇的新手.
这是怎么回事
function f($i){return $i<2?$i:f($i-1)+f($i-2);}
Run Code Online (Sandbox Code Playgroud)
(聪明的人写的)
产生与此相同的结果
function fibonacci($n, $arr = array(0,1)){
$arr[] = $arr[(count($arr) - 1)] + $arr[(count($arr) - 2)];
if (count($arr) == $n) return $arr[$n - 1];
else return fibonacci($n, $arr);
}
Run Code Online (Sandbox Code Playgroud)
(矿)
我想我只是没有得到语法.那里有if语句吗?
我做了一个程序来查找一个数字是否属于斐波那契系列,如果它确实是什么位置.当我输入一个数字时,如果条件出错了.
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main(void)
{
int i,x=1,y=1,z,num;
clrscr();
printf("Enter a number to find in fibonacci series:");
scanf("%d",&num);
/*to find if the number is a part of fibonacci series or not*/
if((isdigit(sqrt(5*num*num+4)))||(isdigit(sqrt(5*num*num-4)))) //<-- this if!
{//belongs to fibo!
for(i=1; ;i++)
{
if(x==num)
break;
z=x+y;
x=y;
y=z;
}
printf("%d is the %d term of fibonacci series.",num,i);
}
else
printf("Dear user,The entered number is not a part of the fibonacci series.");
getch();
}
Run Code Online (Sandbox Code Playgroud) 由于我正在学习C#,我做了一个小程序来计算X的斐波那契数量.然而,随着数字迅速变大,即使是无符号长数也不能保持数字.我该如何解决这个问题?制作我自己的超大整数数据类型?
这是一个Haskell函数,它接受一个数字n并返回第n个斐波纳契数.(我使用了索引方案,使得第0个数字为0,第1个数字为1,第2个数字为1,第3个数字为2,依此类推.)
fib :: (Integral a) => a -> a
fib 0 = 0
fib n = fibhelper n 0 1
fibhelper :: (Integral a) => a -> a -> a -> a
fibhelper 1 x y = y
fibhelper n x y = fibhelper (n-1) y (x+y)
Run Code Online (Sandbox Code Playgroud)
现在,假设为了效率,我想绕过Haskell的懒惰评估并强制评估更新的参数(例如使用$!运算符?)最优雅/惯用的方法是什么?
haskell tail-recursion pattern-matching fibonacci lazy-evaluation
我试图以递归方式制作斐波纳契,如下所示:
Option Explicit
Dim n, contador, termo
function fibonacci(n)
if n < 2 then
Return n
else
Return fibonacci(n-1) + fibonacci(n-2)
end if
End function
termo = InputBox("Diga ate que termo vai a sequencia de fibonacci")*1
for contador = 0 to termo
MsgBox fibonacci(contador)
next
Run Code Online (Sandbox Code Playgroud)
但我得到错误:变量未定义:'返回'我的代码有什么问题?
这可能听起来像学校的作业,但事实并非如此!
我做了一个递归函数从Fibonacci序列返回一个值.
let rec FoneFive n =
match n with
| 1 | 2 -> 1
| n -> FoneFive(n-1) + FoneFive(n-2)
printfn "%A" (FoneFive 6)
Run Code Online (Sandbox Code Playgroud)
这个递归函数发生了什么?FoneFive 6尽可能给出8.但为什么?
我看待它的方式:从n = 6开始,得出结论6不是1或2.所以它调用FoneFive(n-1) + FoneFive(n-2).(这可能是我错误的地方.但我看到的方式是,除非n为1或2,否则不会返回任何内容.所以从我的观点来看,它会缩小n = 1或2,然后说1 + 1当然是2.)
有人能告诉我它是如何返回8的吗?
我目前正在实现这个简单的代码,试图使用Python 2.7找到Fibonacci序列的第n个元素:
import numpy as np
def fib(n):
F = np.empty(n+2)
F[1] = 1
F[0] = 0
for i in range(2,n+1):
F[i]=F[i-1]+F[i-2]
return int(F[n])
Run Code Online (Sandbox Code Playgroud)
这适用于F <79,但在此之后我得到错误的数字.例如,根据wolfram alpha f79应该等于14472334024676221,但fib(100)给我14472334024676220.我认为这可能是由python处理整数的方式引起的,但我不知道究竟是什么问题.任何帮助是极大的赞赏!
我想创建一个Fibonacci数列表.我想调用fib x,它应该给我一个列表,直到第x个元素.我如何实现这一目标.
我会像这样计算fib数:
fib 0 = 0
fib 1 = 1
fib n = fib (n-1) + fib (n-2)
Run Code Online (Sandbox Code Playgroud)
如何将结果放入列表中以调用列表直到我需要的元素?
这不是家庭作业。在下面的代码中:
(defparameter nums '())
(defun fib (number)
(if (< number 2)
number
(push (+ (fib (- number 1)) (fib (- number 2))) nums))
return nums)
(format t "~a " (fib 100))
Run Code Online (Sandbox Code Playgroud)
由于我对Common Lisp完全没有经验,所以我对为什么该函数不返回值感到困惑。我正在尝试打印斐波那契数列的第一个“ n”值,例如100。
谢谢。
尽管可以使用此线程,但是由于答案的不同,我不允许在答案下问我的问题,因此我不得不为此创建一个新问题。(我只是stackoverflow中的新手:)
关于以下fib功能如何工作,我并不清楚
fibs :: [Integer]
fibs = 1 : 1 : zipWith (+) fibs (tail fibs)
Run Code Online (Sandbox Code Playgroud)
nichijou逐步解释了我从nichijou引用的以下线程:
首先,我们使用fib和tail fib可以得到第3个:
Run Code Online (Sandbox Code Playgroud)fibs : [1, 1, ? tail fibs : [1, ? zipWith (+) fibs (tail fibs): [2, ?现在,我们知道第三个是2,我们可以得到第四个:
Run Code Online (Sandbox Code Playgroud)fibs : [1, 1, 2, ? tail fibs : [1, 2, ? zipWith (+) fibs (tail fibs): [2, 3, ?现在的第五名:
Run Code Online (Sandbox Code Playgroud)fibs : [1, 1, 2, 3, ? tail fibs : [1, 2, 3, ? zipWith (+) fibs (tail fibs): [2, …