2014-04-16 115 views
1

我需要转移for循环recrusion功能..转移for循环递归,爪哇

这是我的温控功能:

public void AddEnemyToScreen(int enemy_count) 
{ 
    for(int i=0 ; i<enemy_count;i++) 
    { 
     AddEnemey(new Enemy(r.nextInt(640), -10, textures,this,game)); 
    } 
} 

我试图做到这一点:

public void AddEnemyToScreen(int enemy_count) 
{ 
    if (enemy_count == 1) 
     AddEnemey(new Enemy(r.nextInt(640), -10, textures,this,game)); 
    else 
    { 
     AddEnemyToScreen(--enemy_count); 
    } 

} 

,但由于某种原因,它的剂量工作..

+0

它是如何工作的? –

回答

3

你的递归函数的条件是只有当敌人添加敌人y_count等于1,这意味着你只会增加一个敌人。

public void AddEnemyToScreen(int enemy_count) 
{ 

    // As long as enemy count is positive, keep adding enemies. 
    if (enemy_count > 0) { 
      // Add new enemy to screen 
      AddEnemey(new Enemy(r.nextInt(640), -10, textures,this,game)); 
      AddEnemyToScreen(enemy_count-1); // Add one more    
    } 

} 
+0

通过这种方式,线程不会停止添加enemines – user2922456

+0

是的,它会在enemy_count等于0时返回,因为它不会调用递归函数:) – Pphoenix

+0

我现在试过这个..即使我发送到函数0的线程总是加addes新的敌人 – user2922456