内部调用方法不好?

时间:2013-10-04 21:39:15

标签: c# methods

我一直在编写一个文字冒险游戏。在游戏开始时,调用Menu(字符串Choice,bool takenDump)。有几种其他方法具有用户可能遇到的不同场景,例如口袋妖怪遭遇等。如果用户死亡,则他们在Menu()处重新启动,这意味着它会从内部再次调用。有什么方法可以避免这种情况吗? Source of program

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

不,从自身调用方法是完全正确的 - 名称是“递归”/“递归函数”。

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

 while (continuePlaying)
 { 
    ResetLevels_Lives_AndEverything(); 
    while(notDead)
    {
       handleInput()
       draw()
       notDead = ChechStillAlive();
    }
    continuePlaying = CheckContinuePlaying();
 }

答案 2 :(得分:1)

使用递归时应注意的一件事是堆栈溢出。这似乎不是你想要做的事情的问题,但是如果你的方法多次调用自己,并且每个调用再次多次调用它,它将会发生(除非你设置一个合理的限制你走多远的程度)。想想分形,阶乘,斐波那契序列。