黑马程序员技术交流社区
标题:
语言重要,算法也重要
[打印本页]
作者:
阿牛
时间:
2012-3-23 20:19
标题:
语言重要,算法也重要
本帖最后由 牛秦勇 于 2012-3-23 20:21 编辑
记得老师以前说过,做程序,最重要的不是语言,而是算法和数据结构,语言只是实现的工具而已。当然,我认为,语言也非常重要,就像人体的各部位一样,不能说哪个重要哪个不重要,少了谁也不行,做程序就是在解决问题,用熟练的高级的语言更清晰高效的表达我们的思想。在大家夯实语言的同时,在此我与大家分享些有趣的问题,拓展我们的思路,提高解决问题的能力。
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
从第一个月起数,每月的兔子对数为:1,1,2,3,5,8,13,21,。。。
从以上数列可以发现,从第三个月开始每月兔子数是前两个月数之和。
public class Rabit
{
public static void main(String[] args)
{
System.out.println("第1个月的兔子对数: 1");
System.out.println("第2个月的兔子对数: 1");
int f1 = 1, f2 = 1, f, M=24;//f2为每月兔子数,按对计,M是月份,大小可以随便设,但不能设无限大,否则就永远循环下去了
for(int i=3; i<=M; i++)
{
f = f2;
f2 = f1 + f2;
f1 = f;
System.out.println("第" + i +"个月的兔子对数: "+f2);
}
}
}
实际上,这是个斐波拉契数列,斐波拉契是13世纪欧洲著名的数学家,著有《算盘书》一书,书上记载了许多有趣的数学问题,上面即是一例。这个数列有许多奇特的的性质,例如,从第3个数起,每个数与它后面那个数的比值,都很接近於0.618,正好与大名鼎鼎的“黄金分割律”相吻合。人们还发现,连一些生物的生长规律,在某种假定下也可由这个数列来刻画呢。
作者:
杨朝辉
时间:
2012-3-23 20:27
Fibonacci数列,这个在面试的时候很容易见到,要求使用递归。
public int fibonacci(int n)
{
if(n>=0)
{
if(n==0||n==1)
return n;
else
return fibonacci(n-2)+fibonacci(n-1);
}
return -1;
}
复制代码
作者:
陈汉帆
时间:
2012-3-23 22:37
额,谁看过高德纳大神的《计算机程序设计艺术》呢
作者:
庞子华
时间:
2012-3-24 00:40
当然!计算机原本就是数学嘛
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2