【发布时间】:2016-04-07 13:14:23
【问题描述】:
我是整个编程领域的初学者,我正在根据一本书进行编程练习。我已经到达了本书的一部分,我应该在其中编写递归函数。一些程序崩溃,我不知道我做错了什么。请比较这两个:
-
这应该从键盘读取一个数字并返回数字! (数字的阶乘)。我尝试输入数字后它崩溃了
#include <stdio.h> int number, x; int factorial (int a); int main() { printf("Input a nonnegative whole number: \n"); scanf("%d", &number); int x = factorial(number); printf("Factorial of %d equals %d", number, x); return 0; } int factorial (int a){ if(a=0) { return 1; } else { return a*factorial(a-1); } } -
这应该从键盘读取 n 并返回字符串中第 n 个元素的值。这个不会崩溃。
#include <stdio.h> int n; int string (int a); int main() { printf("Input a nonnegative whole number: \n"); scanf("%d", &n); int x = string(n); printf("%d element of the string equals %d", n, x); return 0; } int string (int a) { int value; if (a<=1) { value = 1; } else { value = string(a-1) + 2*string(a-2) + 3; } return value; }
这两个程序在我看来几乎相同。我无法弄清楚为什么第一个崩溃而第二个没有。请帮忙,提前谢谢。
【问题讨论】:
-
if (a=0)- 仔细看看,缺少一个字符。 -
是时候学习如何使用调试器了,这对发现这些简单的问题很有帮助。
-
一些编译器对此发出警告...
-
哇,好吧,这是一个简单的错误。可悲的是,我没有收到任何警告。非常感谢大家!