缺少返回语句错误

Posted

技术标签:

【中文标题】缺少返回语句错误【英文标题】:Missing return statement Error 【发布时间】:2013-04-27 10:09:34 【问题描述】:

我刚开始写递归方法。我的 10 次幂方法之一是给我一个缺少返回类型的错误。

public static double powerOfTen(int n)


 if (n == 0)
  return 1;

 if(n > 0)
  return (10 * powerOfTen(n - 1));

 if(n < 0)
  return (1 / powerOfTen(n - 1));


我很新,所以任何解释都将不胜感激。

////// 编辑 这对我来说很有效,对于十的负数和正数。感谢您的帮助:D

public static double powerOfTen(int n)


 if(n > 0)
  return (10 * powerOfTen(n - 1));

 if(n < 0)
  return (1 / powerOfTen( (-1)*(n) ));


 return 1;


【问题讨论】:

最后一个if 中的可能错误:不应该涉及n + 1 而不是n - 1 if(n 那行得通。 ((-1)*(n)也可以写成-n。) 【参考方案1】:

试试:

public static double powerOfTen(int n)

 if(n > 0)
  return (10 * powerOfTen(n - 1));

 if(n < 0)
  return (1 / powerOfTen(n - 1));

  return 1;

编译器认为它不能保证总是返回一个值,因为所有返回都在if 语句中。这样做可以消除混乱

【讨论】:

【参考方案2】:

请更改您的代码:

重点很明确:如果该语句是 false,我不希望 函数继续,所以我会 return 你错过了。

 public static double powerOfTen(int n)
    
     if(n>1)             //check for positive n value
     if(n > 0)
      return (10 * powerOfTen(n - 1));
    else if(n < 0)
      return (1 / powerOfTen(n - 1));
    
    
      return something;  //here error
    

作为最佳实践的附注,请在if else statements.之间使用

【讨论】:

好的编译好了。我主要进行了一个小测试。但是当我为 n 输入一个负整数时,我得到一个堆栈溢出错误。似乎无限循环。帮忙? 所以请先检查天气 n 是否 >1。如果 n>1,那么只有剩下的事情才能完成。更新我的答案。 解决了溢出问题,但该方法对任何通过的负整数返回 1.0。 你的期望是什么?你最终会返回 1,因此它会转换为双精度数,即 1.0。如果 negetivd 输入是否有您期望返回的内容。? 如果我通过 -3 我希望它返回 0.001【参考方案3】:

编译器没有进行范围覆盖测试,因此它不会注意到您的代码覆盖了 int n 的所有可能值,因此不会出现错误。

【讨论】:

以上是关于缺少返回语句错误的主要内容,如果未能解决你的问题,请参考以下文章

× 错误: Header(...): 渲染没有返回任何内容。这通常意味着缺少 return 语句。或者,不渲染任何内容,返回 null

错误:StateProvider(...):渲染没有返回任何内容。这通常意味着缺少 return 语句。或者,不渲染任何内容,返回 null

错误:应用程序(...):渲染没有返回任何内容。这通常意味着缺少返回语句 discord.js react typescript

React - 错误:App(...):渲染没有返回任何内容。这通常意味着缺少 return 语句。或者,不渲染任何内容,返回 null

基本级别的 Java 程序。缺少返回语句异常

甲骨文。使用 case 语句时缺少关键字。错误 00905