首页 > 解决方案 > 如何修复代码的逻辑?我收到运行时错误和 stackoverflow 异常

问题描述

有 4 个朋友 A,B,C,D 每个人都有一些钱,他们每天都在他们之间分享,直到无法平均分享,例如 A 有 15$ ,它与 B,C 分享 5,5,5, 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);

}

}

标签: logic

解决方案


您不应该从同一个类调用函数 main(),否则函数 Friend() 将被递归调用,创建新的 Program 类实例,因此一次又一次地调用 main()。


推荐阅读