【发布时间】:2018-03-07 18:38:40
【问题描述】:
递归函数有问题。
我必须构建一个递归函数,它创建一个与给定数字的数字相对应的整数值数组。
例如,如果我输入一个像 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];是一个非标准的供应商编译器扩展。请改用new[]或std::vector。但是你不想在每次调用函数时都创建一个新数组。在main中创建一个数组,然后将其传递给要填充的函数。并且您需要从后到前填充数组,而不是从前到后,否则数字将按倒序存储(2, 6, 5, 3而不是3, 5, 6, 2) -
使用 std::vector - 使用 std:vector 生活总是更美好
标签: c++ arrays recursion integer