代码死循环,除了1到9以外的所有输入全部陷入死循环。
#include
#include
#include
#include
#include
using namespace std;
#define ll long long;
vector<int>v;
vector<int> fuc(int a)
{
if (a >=10)
{
while (a >= 10)
{
int l = a % 10;
v.push_back(l);
a = a / 10;
}
v.push_back(a);
}
else
v.push_back(a);
return v;
}
int fuc2(vector<int> v)
{
if (v.size() == 1)
{
return v[0];
}
else
{
int sum = 0;
int s = v.size();
for (int j=0; jclear();
fuc2(fuc(sum));
}
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; ++i)
{
int m;
cin >> m;
cout << fuc2(fuc(m)) << endl;
return 0;
}
}
报错:
v.clear(); 这里清除只是清除了fuc2函数参数v的数据,并没有清除全局变量v的数据,而fuc函数一直在向全局变量v添加数据
一个办法是fuc2函数不需要参数,fuc1也不需要返回值,因为都是用全局v
或者fuc2函数参数改个名称,除了v.clear()外,将fuc2中的v都换成新的名称。这样就clear的是全局变量v的值