我正在尝试将递归函数转换为迭代函数。偶数/奇数计算的不同之处在于我无法弄清楚如何获得迭代解。以下是有问题的功能。
public static int a(int n)
{
if(n==1) return 1;
else if(n%2 == 0) return a(n/2)*4;
else return (a((n-1)/2)+a((n+1)/2))*2;
}
此功能是我对this video中所述问题的解决方案(您需要在给定数量的钩子上绑几个循环,以便删除一个钩子才能解开所有剩余的循环)。
结果序列为1、4、10、16、28、40、52、64、88、112,...,在增加的值上确实有一定规律性。
我力求得到2 ^ n序列中值的解决方案: 4 ^(log(n)/ log(2))
但是,是否有针对整个范围的迭代解决方案?
答案 0 :(得分:0)
考虑了很长时间,我自己找到了一个迭代解决方案。它可能不是最佳的,因为它比递归解决方案复杂得多(而且很多都比递归解决方案慢)。
$ n 9