【发布时间】:2014-02-22 10:09:08
【问题描述】:
我必须编写一个程序,在其中给出第 n 项的最后三位数字。例如,第 20 项是 6765,最后三位是“765”。现在我需要找到斐波那契数列的第一个数字,它的最后三位数字是“321”。
我上网查了一下,发现第n项是479,我写的程序连这么高都达不到。我也找不到任何人的程序高于第 100 项。
截至目前,他们没有办法找到高于 100 的词吗? 除了递归找到以“321”结尾的数字的第一位数字之外,你们还有其他想法吗?
我的递归代码非常基本:
long long fibNum(long long nth)
{
if (nth == 1)
return 1;
else if (nth == 2)
return 1;
else
return fibNum(nth - 1) + fibNum(nth - 2);
}
到第 43 个学期时,它开始放缓。
【问题讨论】:
-
不递归重写。这就是减慢速度的原因。