我对递归函数有疑问。
我必须构建一个递归函数,它创建一个与给定数字的数字相对应的整数值数组。
例如,如果我输入一个像 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/