代码死循环,除了1到9以外的所有输入全部陷入死循环

代码死循环,除了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;
    }
}

报错:

img

v.clear(); 这里清除只是清除了fuc2函数参数v的数据,并没有清除全局变量v的数据,而fuc函数一直在向全局变量v添加数据
一个办法是fuc2函数不需要参数,fuc1也不需要返回值,因为都是用全局v
或者fuc2函数参数改个名称,除了v.clear()外,将fuc2中的v都换成新的名称。这样就clear的是全局变量v的值