я пытаюсь решить эту самую первую проблему, но я застреваю, мне нравится быстрая программа, поэтому я решил использовать рекурсивный метод, а не итерацию
к сожалению, когда входное значение представляет собой большое целое число (100000> вход>1000000), часто происходит сбой
, поэтому я отлаживаю его, и он показывает ошибку переполнения стека
, пожалуйста, помогите мне, я не знаю, что делать, я пытался изменить тип данных на unsigned long,unsigned int и т. д., но ничего из этого не работает
вот мой код, я использую ANSI C
#include "stdio.h"
int cek(int n) {
return n % 2;
}
int fung(int n,int c) {
if (n == 1) {
return c;
}
if (!cek(n)) {
return fung(n/2,++c);
}
else {
return fung((n*3)+1,++c);
}
}
int comp(int i,int j,int tmp) {
int temp;
if (i == j)
return tmp;
temp = fung(i,1);
if (temp > tmp)
return comp(++i,j,temp);
else
return comp(++i,j,tmp);
}
int main() {
int i,j,tmp;
while (scanf("%d %d",&i,&j)) {
if (i > j) {
tmp = i;
i = j;
j = tmp;
}
printf("%d %d %d\n",i,j,comp(i,j,0));
}
return 0;
}
PS: извините за мою глупость, я действительно новичок @ _ @