一个算法题: 1、1、2、3、5、8、13、21、34 求第30位数是多少 算法 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第n个数,是第n-1个数与第n-2个数之和。并且第1、第2个数都是1。就思想上来说,这是简单的“函数映射”概念。如果上过理科,学过各门类的数学模型(例如如果你学过物理学,是否还有点印象、有正规的老师给你讲过“拉格朗日电磁方程”呢?),会反复地在7、8个不同的基础课程中受到这类训练。所以说上学就是干这个的,学校不会给你真金白银,但是会影响人的一生。知道编程里能体现递归函数计算,这就好象是知道“蔬菜里有盐分”一样,只要有别的基础就能记住了。 菲波拉契数列,从第三项开始,每项等于前两项之和。用递推表示就是f(1) = 1f(2) = 1f(n) = f(n - 1) + f(n - 2) n >= 3 递归方便简洁,用循环也可以额DECLARE @i INT=3DECLARE @f1 INT=1,@f2 INT =1,@f3 INTWHILE @i <=30BEGIN SELECT @f3 = @f1 + @f2 PRINT @f3 SET @f1=@f2 SET @f2=@f3 SET @i=@i+1END function fib(n) { var fib_n = function (curr, next, n) { if (n === 0) { return curr; } else { return fib_n(next, curr + next, n - 1); } } return fib_n(0, 1, n); }官方代码。。 递归在java中有个很严重的问题就是占内存 我记得N=31的时候必溢出递归方便简洁,用循环也可以额DECLARE @i INT=3DECLARE @f1 INT=1,@f2 INT =1,@f3 INTWHILE @i <=30BEGIN SELECT @f3 = @f1 + @f2 PRINT @f3 SET @f1=@f2 SET @f2=@f3 SET @i=@i+1END int gg(int XH) { int num = 0; if (XH <= 2) { num = 1; } else { num = gg(XH - 1) + gg(XH - 2); } return num; } //1,1,2,3,5,8,13,21,34,55..... for (int a=1,b=1,c=0,i=1; i <= 30; i++) { c = a + b; a = b; b = c; } DataGridView的行弹出修改窗口 C# 能不能动态? 愁,IE异步可插入协议扩展[up有分] C#中三层架构反射问题 Remoting Socket异常“请求的名称有效,但是没有找到请求的类型的数据” 分布调试问题:"当前不会命中断点,没有与此命令关联的可执行代码."; webservice传输文件 关于阴影和深度复制的问题 asp.net中如何调用COM组件? 请教C#和SQL数据库问题 .NET C#开发的网站,IE6打开时显示“无法打开INTERNET 站点,已终止操作”IE7,IE10能打开,求解 请教高手 如何将这一小段 代码 改写成 c# 代码 跪求
第n个数,是第n-1个数与第n-2个数之和。并且第1、第2个数都是1。就思想上来说,这是简单的“函数映射”概念。如果上过理科,学过各门类的数学模型(例如如果你学过物理学,是否还有点印象、有正规的老师给你讲过“拉格朗日电磁方程”呢?),会反复地在7、8个不同的基础课程中受到这类训练。所以说上学就是干这个的,学校不会给你真金白银,但是会影响人的一生。知道编程里能体现递归函数计算,这就好象是知道“蔬菜里有盐分”一样,只要有别的基础就能记住了。
用递推表示就是
f(1) = 1
f(2) = 1
f(n) = f(n - 1) + f(n - 2) n >= 3
DECLARE @f1 INT=1,@f2 INT =1,@f3 INT
WHILE @i <=30
BEGIN
SELECT @f3 = @f1 + @f2
PRINT @f3
SET @f1=@f2
SET @f2=@f3
SET @i=@i+1
END
function fib(n) {
var fib_n = function (curr, next, n) {
if (n === 0) {
return curr;
} else {
return fib_n(next, curr + next, n - 1);
}
}
return fib_n(0, 1, n);
}官方代码。。
DECLARE @f1 INT=1,@f2 INT =1,@f3 INT
WHILE @i <=30
BEGIN
SELECT @f3 = @f1 + @f2
PRINT @f3
SET @f1=@f2
SET @f2=@f3
SET @i=@i+1
END
{
int num = 0;
if (XH <= 2)
{
num = 1;
}
else
{
num = gg(XH - 1) + gg(XH - 2);
}
return num;
}
//1,1,2,3,5,8,13,21,34,55.....
for (int a=1,b=1,c=0,i=1; i <= 30; i++)
{
c = a + b;
a = b;
b = c;
}