1

我一直在编写文字冒险游戏。在游戏开始时,会调用 Menu(string Choice, bool takeDump)。还有几种其他方法具有用户可能遇到的不同场景,例如宠物小精灵遭遇等。如果用户死了,那么他们会在 Menu() 处重新启动,这意味着它会从自身内部再次调用。有没有办法避免这种情况? 节目来源

4

3 回答 3

4

只要有条件退出循环,就没有问题。如果没有,你基本上有一个无限循环(直到发生 StackoverflowException)。

从纯技术的角度来看,只要在 stackoverflowexception 发生之前打破循环就没有问题。

于 2013-10-04T21:42:21.320 回答
3

不,从自身调用方法是完全可以的——名称是“递归”/“递归函数”。

在您的特定情况下,绝对没有必要(并且可能是错误的)。顶级游戏代码通常看起来像无限循环而不是递归:

 while (continuePlaying)
 { 
    ResetLevels_Lives_AndEverything(); 
    while(notDead)
    {
       handleInput()
       draw()
       notDead = ChechStillAlive();
    }
    continuePlaying = CheckContinuePlaying();
 }
于 2013-10-04T21:44:55.963 回答
1

使用递归时应该注意的一件事是堆栈溢出。这似乎不是您尝试做的问题,但是如果您的方法多次调用自身,并且每个调用再次调用它多次,它就会发生(除非您设置合理的限制你走多深的水平)。想想分形、阶乘、斐波那契数列。

于 2013-10-04T22:02:19.000 回答