日期:2014-05-20 浏览次数:20801 次
int[] arr = new int[20];
arr[0] = arr[1] = 1;
for (int i = 2; i < arr.length; i++)
arr[i] = arr[i - 1] + arr[i - 2];
for (int i = 0; i < arr.length; i++)
System.out.print(arr[i] + " ");
------解决方案--------------------
Fibonacci(n):=
(
var(a1,1),
var(a2,1),
var(a3,1),
while(
(set(n,n-1)>=2), //条件,n<3时,直接返回a3,
(
set(a3,+(a1+a2)),
set(a1,a2),
set(a2,a3)
)
),
a3
)
------解决方案--------------------
第一问,因为没有数组之类的数据结构可以使用,只能简单的获得斐波那契数列某一位的值
fibonacciNumber(i) :=
(
var(count,2),
var(result,1),
var(last,1),
while(>(i, count),
(
var(temp, result),
set(result, +(result, last)),
set(last, temp),
set(count, +(count, 1)),
)),
result,
)
------解决方案--------------------
2、第一条新语法 ,定义数组的函数为set(array,{1,2,3,4,5,6}) 前面为数组的名称,后面为数组的内容,要取得数字的内容只需要这样取..array[1] ,表示取得数组的第二个元素。元素下标值从零开始
第二条新语法 ,if条件里面可以加逻辑判断符号 || && 等等
jiaoji(start0,end0,start1,end1):=
( var(result,0),
set(
result,
if(>(start0,start1) || >(end0,end1),
set(array,{0}), //没有交集
set(
array,
{
if(>=(start0,start1),start0,start1),
if(<=(end0,end1),end0,end1)
}
)
)
)
)
调用 : (var(array,{0}),set(array,FibonacciNumber({1,2,3,4,5}[0],{1,2,3,4}[3]),{3,4,5}[0],{3,4,5}[2])) //求1-5 和1-4的交集 返回数组array