**初次用Io写斐波拉契
搞了我一下午,我 TM 终于知道Io的“消息"怎么用的了
Io文档什么都没讲,气!
先上js代码:
// 迭代
function fib0(n)
{
var first = 1;
second = 1;
third = first + second,
count = 3;
if(n < 2)
return 1
if(n == 3)
return third;
else{
for(; count < n; count++)
{
first = second;
second = third;
third = first + second;
}
return third;
}
}
// 递归
function fib1(n)
{
if(n <= 2)
return 1;
else
return fib1(n - 2) + fib1(n - 1);
}
以下是Io代码:
a := 1
b := 1
c := a + b
fib0 := method(n,
if(n < 2,
1,
if(n == 3,
2,
for(i, 3 , n - 1,
c = a + b a = b b = c
)))
)
fib1 := method(n,
if(n <= 2,
1,
fib1(n - 2) + fib1(n - 1))
)
在第一个fib0中的代码中,Io语言隐隐约约有种lisp语言的味道~
关于什么是所谓的“消息”,我们看这行代码:
c = a + b a = b b = c
我们发送“c = a + b"这个**”对象“*一个消息(”a = b b = c")
然后对象返回c的值
反正一行中最左边的是对象
后面的都是“消息”。