【发布时间】:2013-10-02 18:10:44
【问题描述】:
我知道这是一个非常琐碎的问题。
我正在尝试编写一个程序,它将不断要求用户输入为 int,直到用户输入 0,此时它将终止并反向打印出所有数字。这是我目前所拥有的:
int revList(int num)
{
if (num != 0)
{
scanf("%d", &num);
printf("%d\n", revList(num));
return num;
}
return 0;
}
我的主要方法是:
int revList(int);
printf("%d", revList(1));
revList 中的 1 是任意选择的,以满足编译器争论的需要,即使它在第一次迭代中没有用。
我了解我的代码可能效率低下并且没有正确使用递归。
代码有效,但有 1 个问题:它打印 0 两次,然后打印前面的数字。我意识到问题出在哪里。这是因为我最后有一个 return 0 但我不能把它取出来,因为它会到达一个非 void 函数的末尾,并且以这种方式,它返回 0 两次。
有人可以帮我解决这个问题并给我一个有效的方法来解决这个问题吗?
编辑: 示例:用户输入: 1 2 3 4 5 8 0
它应该输出:
0 8 5 4 3 2 1
我的程序将输出: 0 0 8 5 4 3 2 1
【问题讨论】:
-
@chris :D 这是个好答案... :D
-
@chris 如果你在课堂上做this之类的作业,我对公共教育的一点信心已经正式破灭=P
-
@chris 你在大学学习这个?这个任务对你来说一定很简单。
-
@WhozCraig,所以我继续前进了一点。问题是每个人都无处不在,所以不从头开始被认为是不公平的。至少假设我们已经用另一种语言完成了所有这些工作。
-
@chris 是的,我们在美国也有这个,它似乎没有人想要谈论的“不让一个孩子掉队”的结尾条款:没有孩子领先。可恶的家伙,但是当您达到高级算法和数据结构类时,您有望开始获得可用的内容。