c++ - 递归地将整数存储在数组中

标签 c++ arrays recursion integer

我对递归函数有疑问。

我必须构建一个递归函数,它创建一个与给定数字的数字相对应的整数值数组。

例如,如果我输入一个像 3562 这样的数字,它应该是这样的:

myArray[0] = 3
myArray[1] = 5
myArray[2] = 6
myArray[3] = 2

这是我的代码:

#include <iostream>
using namespace std;

int myFunction(int num, int lenOfNum);

int main(){
    int number;
    int lengthCount = 0;
    cout <<"Input numbers" << endl;
    cin >> number;
    int temp = number;
    for(; number != 0; number /= 10, lengthCount++);        
    number = temp;  
    cout << myFunction(number, lengthCount) << endl;            
}  

int myFunction(int num, int lenOfNum){
    int arr[lenOfNum];
    if(num > 0){
        for(int i = 0; i < lenOfNum; i++){
            arr[i] = num/=10;
            cout << "arr[" << i + 1 << " ]= " << arr[i] << endl;
        }
        return myFunction(num, lenOfNum);
    }
    else if(num == 0){
        return 0;   
    } else; 
}

最佳答案

您的代码的问题是您在每个方法调用中都调用了 int arr[lenOfNum],简而言之,它创建了一个数组,其中包含对可以存储 lenOfNum 整数的内存位置的新引用。

为了解决这个问题,我们在 main 方法中声明数组并将其作为参数传递给函数。

int main() { 
    // somewhere in main after reading lenOfNum
    int arr[lenOfNum];
    // somewhere in main after declaring an array
    myFunction(arr, number, lengthCount - 1);
}

和 myFunction 作为

void myFunction(int *arr, int num, int idx) {
    if (idx < 0) return;  // you've completed processing the num
    else if (num == 0) {
        arr[0] = 0;
        return;
    }

    arr[idx--] = num % 10;
    myFunction(arr, num / 10, idx);
}

关于c++ - 递归地将整数存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49159070/

相关文章:

c++ - 错误 C2156 : pragma must be outside function - why is it happening in this case?

c++ - ms-extensions 标志对 gcc 有什么作用?

javascript - JavaScript 中的数组指针

c++ - 在编译时使用数学公式填充 std::array

arrays - 无法理解寻峰算法的差异

c - Bytelandian 金币,动态规划,解释?

c++ - Delphi :TClientDataSet in C++ for MVS? 是否有实现

c++ - g++ 9.2.1 (Linux) 导致段错误,但 Windows 上的代码块不会

c++ - 换币 C++

python - 严格递增子序列的最小数量