- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是有问题的功能。有问题的变量是 count1
。在 return count1;
之前,该函数似乎将 count1 重置为 1 或 2。最后 cout
行的结果是 n 行,其中 n=尝试次数,包括正确的回答。每行输出一个比下一行大 1 的数字,直到 count1
= 1 或 2。我无法确定它最终输出的模式。
问题本身只是占位符。
到底发生了什么事?
注意:我是一个非常新的程序员,我知道可能有更有效的方法来做我正在做的事情,但我还没有学到。我愿意接受建议,但我对这些建议的理解可能会因为我对 C++ 的不熟悉而受到阻碍
int q1(int count1) //q1() is always fed a value of 1.
{
using namespace std;
if (count1 <= 3) //User gets 3 tries to answer for full credit.
{ //count1 is returned in order to determine user score.
cout << "What is 2+2 \n"; //problem appears to occur between here and the end of this if statement.
double a1;
cin >> a1;
if (a1 == 4)
{
cout << "Yup. You know what 2+2 is. \n\n";
}
else
{
wrong(); //wrong() is a single line void function using std::cout and nothing else.
q1(++count1);
}
}
else
{
cout << "You have used all three tries. Next question. \n\n";
++count1; //count1 is incremented for an if statement in int main()
}
cout << count1 << "\n"; //This line is strictly for debugging
return count1;
}
最后 cout
行的输出看起来是这样的:
5
4
3
2
没有 \n
5432
编辑:
下面有一个答案似乎解决了我的问题,但由于某种原因被删除了。
答案表明我应该将 q1(++count1)
替换为 count1 = q1(++count1);
在我看来这应该行不通,但在实践中它似乎行得通。为什么?
最佳答案
使用递归时,您的函数第一次运行时 count1 为 1(如您所说)。如果用户回答正确,那么您的函数将返回 1,因为 count1 的值永远不会改变。
如果用户回答错误,则 count1 加 1 并将其值赋予新函数(相同类型)。请记住,您传递了 count1 的值,这意味着新函数(第二个 q1()
)将获得数字 2,但会有一个新变量 count1
。它们可能具有相同的名称,但它们是不同的变量。
有两种方法可以解决您的问题:
要么通过使用指针,这样你传递count1的地址,每个函数改变同一个变量。 (这是最难的方法,不是最有效的)或者
除了进行递归调用,您还可以像这样进行 while
:
int q1(int count1)
{
using namespace std;
while (count1 <= 3) //Run as long as user has chances
{
cout << "What is 2+2 \n";
double a1;
cin >> a1;
if (a1 == 4)
{
cout << "Yup. You know what 2+2 is. \n\n";
//Using `break` you stop the running `while` so the next
//step is for the function to return
break;
}
else
{
wrong();
//By incrementing `count1` the next time the `while` runs
//if user ran out of tries it will not enter the loop, so
//it will return `count1` which would most likely be 4
count1++;
}
}
//Here the function is about to return, so you check if user won or lost
if (count1 == 4)
cout << "You have used all three tries. Next question. \n\n";
//Debug
cout << count1 << "\n";
//Return
return count1;
}
关于c++ - 递增的 int 在函数结束时重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34100824/
我正在使用 Json 数据创建 ListView 。我正在填充一些图像、文本字段和一个按钮。当用户单击按钮时,按钮标题会发生变化。 问题是如果按钮被修改并且用户滚动 ListView 按钮重置为第一个
在我的 iOS 测验应用程序中,您有 15 秒的时间来回答问题。如果回答正确,则会出现第二个 View Controller ,然后单击第二个 View Controller 上的按钮将其关闭,并且第
我现在使用 Objective-C 在 iOS 中实现一个功能,即当 slider 值发生变化时,在 slider 的“节点”上方制作一个文本标签。文本标签文本是 slider 的当前值。 因此,我在
所以我有一个名为 AuthStack 的堆栈像这样 const AuthStack = ({ resetPassword, updateEmail }: any) => (
在我的 Flutter 小部件中,我有一个 StreamBuilder检查 snapshot.hasError在这种特定情况下,它将返回我的 ErrorRetryWidget() . builder:
如果我的手机 hibernate 或我离开应用程序发送短信/接听电话,我的应用程序将重新启动。我该如何防止这种情况? 我希望保存对象而不是基本数据类型。如果应用程序关闭或手机关闭,我不需要保存应用程序
我有一个如下所示的数据框: ID TIME AMT 1 0 50 1 1 0 1 2 0 1 3 0 1 4 0 1 4 5
我正在使用 org.eclipse.swt.widgets.Combo 类,我正在执行以下操作 Combo myCombo = new Combo(container, SWT.READ_ONLY);
我有一个 UISWitch 默认位置设置为 off 用户可选择将开关设置为on,我如何通过另一个按钮/操作将该开关重新关闭。 - (IBAction)switchToggled:(id)sender
我试图让玩家 Sprite 节点在接触到危险节点时重置。我怎样才能做到这一点?该代码不起作用。 if player.position == danger.position { player.p
我尝试在启动 UITests 时重置和恢复 UserDefaults 并在它们分别完成时恢复它们。这是在 AppDelegate 中使用的代码: func makeDefaultsBackup() {
我有一个公用事业账单分段表,其中每个分段表示一个月的千瓦时使用情况。我想将 12 人一组合计起来以获得年度账单。 变量bill_cd表示年度账单的最后一部分。 Data download cu
我刚刚使用 composer 为项目安装了一些依赖项。在这个项目中,我们使用 cartalyst/sentry-social 包。为此,我必须使用一个特殊的 GitHub 帐户——但我不知道我在使用该
我对 Marionette collectionView 有疑问。当我没有定义 el 时 var featureditems = new View.CarouselItems({ collection
我有一个knockout/mvc3应用程序。我正在将日期传递回 Controller 。 Controller public ActionResult PackageUpdate(Package up
我有 2 个 Activity ,在第二个 Activity 中,我阅读并对本地 JSON 文件进行了一些更改,它适用于我需要的所有内容,但是当我转到 mainActivity 然后返回到第二个 Ac
我有一个带有 .xib 的 UIViewController,它有 2 个名为“LblA”和“LblB”的 UILable。让我们将此 ViewController 称为“A”。 LblA 和 Lbl
该模型将 LSTM 作为其第一层。 在调用 model.predict 时说你传入了几个样本: >sam = np.array([ [[.5, .6, .3]], [[.6, .6, .3]], [[
我开始使用 Angular.JS。 我有许多共享同一个 Controller 的 View 。每个 View 都是收集存储在 Controller 中的数据的一个步骤: $routeProvider.
我已经使用 DDEV 几天了,它很棒。 但是我发现如果我运行 ddev ssh通过 ssh 进入容器,并通过 npm / aptitude 安装包等等,或者如果我在 ~/ 中创建新文件主目录,有时这些
我是一名优秀的程序员,十分优秀!