【问题标题】:Recursion in java missing a return statement?java中的递归缺少return语句?
【发布时间】:2015-10-11 12:52:30
【问题描述】:
private int yo ( int [] arr, int i){
    if(arr[i]!=0){  
         arr[i+2]=arr[i]+arr[i+1];
         yo(arr, i+2);
    }else{
       return -1; 
    }

}

为什么我缺少退货声明?

【问题讨论】:

  • 那么arr[i]!=0时函数返回什么?
  • 在 if 块中需要添加 return 语句。否则在 else 块之后也可以。
  • 递归是一个丑陋的概念,应该谨慎使用。如果您可以迭代,请迭代。在不使用递归的情况下,10 次中的 9 次解决您的问题会更加清晰,尽管它在中间增加了一些行和步骤。所以我的建议是先尝试通过迭代解决你的问题,如果失败,然后尝试调试你的递归。
  • 我相信你错过了return yo(arr, i+2)

标签: java arrays recursion


【解决方案1】:

您的if 块中缺少return 语句。

一般递归的工作方式如下:

private int recursiveMethod (int a){
   // your code goes here

   return recursiveMethod (..);
}

根据我从您的代码中了解到的情况,您实际上不必使用递归,因此请尝试使用迭代来实现。

无论如何,您的代码应该是:

private int yo ( int [] arr, int i){
    if(arr[i]!=0){  
         arr[i+2]=arr[i]+arr[i+1];
         return yo(arr, i+2);
    }else{
       return -1; 
    }

}

【讨论】:

    猜你喜欢
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 2019-10-07
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 2017-12-20
    相关资源
    最近更新 更多