Как я могу исправить логи c моего кода? Я получаю ошибку времени выполнения и исключение stackoverflow - PullRequest
0 голосов
/ 19 апреля 2020

Есть 4 друга A, B, C, D, каждый из которых имеет определенную сумму денег, которую они делят между собой каждый день, пока их нельзя разделить поровну, например, у A есть 15 $, у него 5,5,5 для B C, D аналогично B = 9 $ делит 3 $, 3 $, 3 $ на другие три, и C с 21 $ и D с 12 $ делает то же самое, поэтому теперь у A 14, B имеет 16 и C имеет 12, а D - 15. На следующий день они снова поделятся обновленными деньгами таким же образом. Я должен считать дни, пока они не смогут делиться одинаково, введите описание изображения здесь и, если сумма может быть разделена навсегда, верните -1. Например: когда все 4 имеет 3 $. Однако я не смог пройти все контрольные примеры из-за ошибки времени выполнения и исключения stackoverflow. Мой код:

Программа класса {

public int Friends(int a,int b, int c, int d, int count)
{ 
    int m = b/3 + c/3 + d/3;
    int n = c/3 + d/3 + a/3;
    int o = d/3 + a/3 + b/3;
    int p = a/3 + b/3 + c/3;
    a=m;
    b=n;
    c=o;
    d=p;
    count +=1;
    count = Friends(a,b,c,d,count);
    return count;
}
static void Main(){
    int count =0;
    Program p = new Program();
    int a = p.Friends(3,3,3,3, count);
    System.Console.WriteLine(a);

}

}

1 Ответ

0 голосов
/ 19 апреля 2020

Вы не должны вызывать функцию main () из того же класса, иначе функция Friend () будет вызываться рекурсивно, создавая новый экземпляр класса Program, и поэтому вызывайте main () снова и снова.

...