【发布时间】:2016-07-21 10:53:39
【问题描述】:
所以我试图将斐波那契数列中的第 n 个数字写成尽可能紧凑的函数:
public uint fibn ( uint N )
{
return (N == 0 || N == 1) ? 1 : fibn(N-1) + fibn(N-2);
}
但我想知道我是否可以通过更改使其更加紧凑和高效
(N == 0 || N == 1)
进行单一比较。有没有一些花哨的位移操作可以做到这一点?
【问题讨论】:
-
为什么?可读性强,意图很明确,而且也不贵。为什么要改成一些更难理解且不能明确识别意图的“聪明”位模式匹配?
-
这不是真正的斐波那契吧?
-
fibonaci 将前两个值相加。您的意思是
fibn(N-1) + fibn(N-2)而不是N * fibn(N-1)? -
我完全赞成减少纳秒,但是如果您在使用递归的方法中进行了简单的比较,为什么要在比较的效率上花费精力,而将递归留在那里呢?
-
您使用递归的方式计算法波纳契数,那么您想提高性能吗?为什么不把它改成循环呢?还是使用快速电源?
标签: c# algorithm optimization arithmetic-expressions