由买买提看人间百态

topics

全部话题 - 话题: fib2
(共0页)
t****a
发帖数: 1212
1
来自主题: Programming版 - 这次Clojure把Scala给干了
尝试了,可以的。如果recursion可以表示为sequence的情形下例如fib数列,就可以用
lazy sequence来实现stackless trampline。
(declare fib2)
(defn fib1 [a b]
(lazy-seq (cons a (fib2 b (+ a b)))))
(defn fib2 [a b]
(lazy-seq (cons a (fib1 b (- a b)))))
(def fib-seq2 (fib1 0.0 1.0))
(nth fib-seq2 100000) ; it works
s***c
发帖数: 1926
2
来自主题: Military版 - 我他妈自己想出一道面试题
给你看看科班码农怎么思考问题
dp + 滚动数组
public int fib(int n)
{
int a = 0, b = 1, c;
if( n == 0)
return a;
for (int i = 2; i <= n; i++)
{
c = a + b;
a = b;
b = c;
}
return b;
}
非要把c去掉的话,简单的数学计算
public int fib2(int n)
{
int a = 0, b = 1;
if( n == 0)
return a;
for (int i = 2; i <= n; i++)
{
b = a + b;
a = b - a;
}
return b;
}
你再要把i省掉就写成不带i的循环啊
所谓省变量,都是编译器可以干的事情。... 阅读全帖
(共0页)