c++ - 为什么递归函数的最终输出是5?
问题描述
为什么上面代码的输出是 5,因为函数应该去第一个 5-4-3-2(因为没有输出)循环递减到 1 所以返回 12 所以最后是 12+1..... 所以答案必须我猜不是5?
using namespace std;
int x()
{
}
int reee(int n)
{
for(int i=n; i>0; i--)
{
if(i==2)
{
return x();
}
else if(n==1)
{
return 12;
}
else
{
return reee(i-1)+1;
}
}
}
int main()
{
cout << reee(5) << " ";
}
解决方案
在这种情况下不需要 for 循环,因为您的函数已经是一个递归函数,因此它会一直运行该函数直到它为 2。当它为 2 时,它返回 x 使其为空主体 + 3。如果你想要它到 1,在 i==2 的 if 语句中,你应该让它 return(i-1) 因此,你的代码应该是这样的:
using namespace std;
int reee(int n)
{
if(n==2) {
return reee(--n);
} else if(n==1) {
return (n+12);
} else {
return reee(--n)+1;
}
}
int main()
{
cout << reee(5) << " ";
}
这应该可以帮助您实现您想要实现的目标。
推荐阅读
- c# - C# Hashtable.cs 不是所有的素数
- django - 如何在 PostgreSQL 中使用 NULL 值强制唯一性
- ios - iOS 通用应用程序链接在模拟器上工作,而不是在真实设备上
- javascript - 我需要同时执行一个 css 动画和一个 Url.Action
- django - 限制 .env 文件来自 apache
- oracle - oracle如何撤销用户的alter table权限?
- stm32 - STM32 ADC 平均值
- c++ - C++:如何从 Windows 交叉编译到 Linux?
- c# - 当我的球员投篮时,我如何击退他们?
- reactjs - 在 Azure WAF 中检测 SQL 注入绕过尝试 3/3