我有一个C ++程序,我必须创建一个递归函数,将一个给定正整数的所有数字写入一个数组 - 在本例中是一个向量。 但是,当我编译程序并输入一个数字时,它就会停止工作。我想问为什么会这样?
#include <iostream>
#include <vector>
using namespace std;
vector <int> arr;
int temp;
int fill_Array(int num)
{
if(num>=1 && num<=9)
{
arr.push_back(num);
}
temp = fill_Array(num)%10;
arr.push_back(temp);
num/=10;
}
int main()
{
int n;
cin>>n;
fill_Array(n);
for(int i=0; i<arr.size(); i++)
{
cout<<arr[i]<<endl;
}
return 0;
}
答案 0 :(得分:2)
我可以看到几个原因:
另外,为什么在迭代会更简单,更明显地做什么时使用递归
答案 1 :(得分:2)
在给定的代码中,递归函数不返回任何值,因此该函数的返回类型没有用处。 调用函数进行递归是在错误的地方。正确的代码如下:
#include <iostream>
#include <vector>
using namespace std;
vector <int> arr;
int temp;
void fill_Array(int num)
{
if(num>=1 && num<=9)
{
arr.push_back(num);
}
else{
temp = num%10;
arr.push_back(temp);
fill_Array(num/=10);
}
}
int main()
{
int n;
cin>>n;
fill_Array(n);
for(int i=0; i<arr.size(); i++)
{
cout<<arr[i]<<endl;
}
return 0;
}