缺少返回语句错误
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