试图将递归函数更改为迭代函数

时间:2019-08-03 00:12:18

标签: recursion

我正在尝试将递归函数转换为迭代函数。偶数/奇数计算的不同之处在于我无法弄清楚如何获得迭代解。以下是有问题的功能。

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))

但是,是否有针对整个范围的迭代解决方案?

1 个答案:

答案 0 :(得分:0)

考虑了很长时间,我自己找到了一个迭代解决方案。它可能不是最佳的,因为它比递归解决方案复杂得多(而且很多都比递归解决方案慢)。

$ n 9
相关问题