日期:2014-05-20 浏览次数:20630 次
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