public int count(int num){
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(1);
if(num>=3){
list.add(list.get(num-2)+list.get(num-3));
return list.get(num-1);
}else{
return 1;
}
}
public int count2(int num){
return (2*num)+1;
}
public static void main(String[] args) {
Test1 test = new Test1();
System.out.println(test.count(1));;
System.out.println(test.count(2));;
System.out.println(test.count(3));;
System.out.println(test.count2(1));;
System.out.println(test.count2(2));;
System.out.println(test.count2(5));;
}
} 作者: 曾大鹏 时间: 2013-5-7 17:41
郑绪梅 发表于 2013-5-7 17:28
第一题的要求是不使用递归。。这样还是用到递归了。
这个又不算递归 我这只是循环而已啊 。。作者: 王宝生 时间: 2013-5-8 12:57
第一个是斐波那契,这个之所以使用数组是因为速度要优于使用递归,代码如下:
public static int sum(int n)
{
int[]list=new int[n];
list[0] = 1;
for (int i = 1; i <n; i++)
list[i] = i;
int result = 1;
for(int i=0;i<n;i++)
result+=list[i];
return result;
}
也可以把两个循环合并到一起。
第二个代码如下:
public static int sum(int n)
{
if (n == 1)
return 1;
return n + sum(n - 1);
}
直接复制,能够运行!!!!作者: zms2100 时间: 2013-5-8 16:02
LZ这第一道题挺坑人的,O(∩_∩)O~............LS让我学习了,原来这东西叫斐波那契数列啊,不过LS们的第一题代码结果都是错的,沙发童鞋(太邪恶了,直接贴斐波那契数列的公式就上来,不过思路是对,O(∩_∩)O~,不过LS们的思路都是差不多的) 【第一题代码见最下面,先贴第二题】
可能LS,那符号打错了,第一个数学符号打的是减号来的(应该是加号吧),另外沙发童鞋的第二题也是错的,这第二题是递增数列来的,公式应该是num = n(n+1)/2,这个这么简单的公式应该很好实现,篇幅有限,不贴代码了。(假如n=100,那么按沙发的公式,总数num 应该是等于201,但是答案应该是5050才对啊)。
————————————第一题代码——————————————————————————————
package hehe;
import java.util.ArrayList;
class MathDemo
{
public static void main(String[] args)
{
sum(8);
}
public static void sum(int n)
{
int[] i = new int[n];
i[0] = 1;
i[1] = 1;
for(int x =2;x<n;x++)
{
i[x] = i[x-1] + i[x-2];
}
for(int x : i)
{
System.out.println(x);
}
}
}作者: zms2100 时间: 2013-5-8 16:07