解题思路

就是很简单的递归,终止条件设置为当前数值小于10即可。写题解主要是因为提交的时候无法编译,报错信息是不是每一个分支都有返回值,于是把 dealdeal 函数的最后一行改为
returnreturn deal(ans);deal(ans); 才通过。提醒注意函数内每条分支都要有返回值。

通过代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll deal(ll n)
{
    if (n < 10)  return n;
    ll ans = 0;
    while(n)
    {
        ans += n % 10;
        n /= 10;
    }
    return deal(ans);
}
int main()
{
    ll n;
    cin >> n;
    cout << deal(n) << endl;
    return 0;
}