我正在编写一个程序,通过创建简单的骰子游戏,帮助我们了解递归函数的工作原理。但由于某种原因,输出是错误的,我不知道为什么。我得到了这个:
当我得到这样的东西时:
这是我的代码:
#include <iostream>
//function prototype:
int payoff(int x, int y, int z);
void loopR1(int R1, int upto);
void loopR2(int R2, int upto);
void loopR3(int R3, int upto);
//global variables:
int total;
using namespace std;
int main(void) {
cout << "R1\t R2\t R3\t\n" << endl;
////////////////////
//first loop
////////////////////
loopR1(1, 4);
printf("\n");
system("PAUSE");
return 0;
}
void loopR1(int R1, int upto)
{
while (R1 < upto){
loopR2(R1, upto);
R1++;
}
}
void loopR2(int R2, int upto)
{
while (R2 < upto){
loopR3(R2, upto);
R2++;
}
}
void loopR3(int R3, int upto)
{
int R1 = 1;
int R2 = 1;
while (R3 < upto){
printf("%d\t %d\t %d\t payoff is %d\n", R1, R2, R3, payoff(R1, R2, R3));
R3++;
}
}
/////////////////////////////////////////////////////////
//FUNCTIONS:
/////////////////////////////////////////////////////////
int payoff(int R1, int R2, int R3) {
if (R2 < R1) {
total = total + R2;
} //end if
else {
if (R3 < R1) {
total = total + R3;
} //end if
else {
total = R1;
} // end else
} //end else
if (R3 < R2) {
total = total + (2 * R3);
} //end if
else {
if (R3 < R1) {
total = total + R3;
} //end if
else {
total = R1;
} //end else
} //end else
return total;
} //end function payoff
有人可以帮我弄清楚我做错了什么以及如何让它正确循环?提前谢谢!
答案 0 :(得分:0)
您的代码包含以下功能:
void loopR3(int R3, int upto)
{
int R1 = 1;
int R2 = 1;
while (R3 < upto){
printf("%d\t %d\t %d\t payoff is %d\n", R1, R2, R3, payoff(R1, R2, R3));
R3++;
}
}
根据上下文,您可能想要做的是传递R1和R2的值,而不是声明本地版本并将它们初始化为值1.
或者,由于您使用的是C ++,因此您可以考虑创建一个对象来保存所有三个值和total
的值(其功能在您的代码中不清楚)。如果这样做,您还可以创建一个函数来打印出值(也许使用iostream
而不是printf
)。