C++ 将递归解转换为迭代解

C++ 将递归解转换为迭代解,c++,c,c++11,recursion,C++,C,C++11,Recursion,下周我就要进行期中考试了,我遇到了一个我无法解决的问题(我发现递归太令人困惑了!)。我需要将这个递归函数转换为迭代函数,非常感谢您的帮助/提示等 递归解决方案: long F(int n) { if (n >= 0) { if (n >= 3) { //std::cout << "Current n is: " << n << std::endl; long result =

下周我就要进行期中考试了,我遇到了一个我无法解决的问题(我发现递归太令人困惑了!)。我需要将这个递归函数转换为迭代函数,非常感谢您的帮助/提示等

递归解决方案:

long F(int n) {
    if (n >= 0) {
        if (n >= 3) {
            //std::cout << "Current n is: " << n << std::endl;
            long result = 0;
            result = 3 * F(n - 1) + 2 * F(n - 2) + F(n - 3);

            //std::cout << "Current result is : " << result << std::endl;
            return result;
        }
        else  {
            return n;
        }
    }
    else {
        return -1;
    }
}
long F(int n){
如果(n>=0){
如果(n>=3){

//std::cout在这种情况下,动态规划方法将完成这项工作-当n==0时,从下至上开始,并将
n
的顺序值的结果存储在一个数组中。类似于这样(它是伪代码):


对于(int i=0;i)我不会给出答案,但所有尾部递归都可以转换为迭代,请参阅此答案以获取解释:
long F2(int n) {
    if (n >= 0) {
        long outterResult = 0;
        long innerResult = 0;

        for (int o = n; o >= 3; o--) {
            outterResult += innerResult;
            int iteration = 1;
            for (int i = 3; i > 0; i--) {
                innerResult += i*(n-iteration);
                iteration++;
            }
            //std::cout << "Current n is: " << n << std::endl;
            //std::cout << "Current result: " << outterResult << std::endl;
        }
        return outterResult;
    }
    else {
        return -1;
    }
}
 for(int i = 0; i <=n ;++i)
   if( i < 3)
       arr[i]=i;
   else
       arr[i] = 3 * arr[i-1] + 2 * arr[i-2] + arr[i-3]

 return arr[n];