正在写一网站上的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数我会,只需给出思路即可,代码我自己实现。
正在写一网站上的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数我会,只需给出思路即可,代码我自己实现。
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)
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
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
4 回答4.5k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
4 回答3.9k 阅读✓ 已解决
既然会产生F数,那为什么不会做这一题呢?只要在for循环里判断一下有没有达到n即可,没达到就继续产生,然后把产生的F数存入一个数组,达到了就跳出循环并返回该数组