【发布时间】:2021-05-23 21:43:29
【问题描述】:
`#include
ll solve(ll a, ll b, ll i){
//base case
if (a == 0) return i;
if (b > a) return i+1;
//recursive case
if (b == 1) {
return solve(a,b+1,i+1);
}
ll n = solve(a, b+1, i+1);
ll m = solve(a/b, b, i+1);
return min(n,m);
}
int main(){
int t;
cin >> t;
while(t--){
ll a, b;
cin >> a >> b;
cout << solve(a, b, 0)<< endl;
} }`
基本上问题来自 codeforces (1485A)。问题是,当我给一些大的输入,比如 50000000 a 和 5 给 b 时,这给了我分段错误错误,而代码对于较小的输入工作正常。请帮我解决。
【问题讨论】:
-
此代码没有任何 cmets。您是否希望我们通过分析来弄清楚它在做什么?
标签: recursion segmentation-fault