Следующий код принимает входные данные x и y, а затем вызывает функцию. Предполагается, что функция будет вызываться 3 раза, и в этом случае она вернется 1. Если, однако, значения x или y упадут до очень низких уровней, функция не будет вызываться 3 раза, и в этом случае она вернет 0.
Мой ввод 3, 22. Я вижу, что значение t становится 3 после того, как функция была вызвана 3 раза, но она возвращает значение 0 вместо 1 (как видно из значения i). Может кто-нибудь объяснить, почему это происходит?
PS: некоторые разделы кода были удалены, поэтому мы можем сосредоточиться только на соответствующих частях.
#include <iostream>
using namespace std;
int turn_yeh(int &x, int &y)
{
static int t = 0;
cout << "t : " << t << " x: "<< x<< " y : " << y<<endl;
if (t != 0 && t% 3 == 0) return 1;
if(x!= 0 && t!= 2){x--; t++; turn_yeh(x,y);}
else if(y >=10 && t!=2){y -= 10*t; turn_yeh(x,y);}
if( y >= 2 && t == 2){y -= 2; t++; turn_yeh(x,y);}
else return 0;
}
int main()
{
int x, y;
cin >> x >> y;
int i = 1;
while (1)
{
i = turn_yeh(x ,y);
cout << "i : " << i << endl;
if (i == 0)
{
cout << "Hanako";
return 0;
}
}
}