我正在編寫一個程序來使用遞歸main
()函數來計算階乘。使用main()函數遞歸
/* Print factorial */
#include <stdio.h>
#include <stdlib.h>
static char **p;
int main(int argc, char **argv)
{
int n, rv;
if (argc < 2) {
printf("Usage: a.out <value>\n");
exit(-1);
}
n = atoi(argv[1]);
if (!n) {
rv = 0;
} else {
if (n == 1) {
rv = 1;
} else {
n = n - 1;
**p = n;
main(2, p);
}
}
printf("%d\n", rv);
return 0;
}
程序編譯使用gcc
但在執行時,我在**p = n
得到一個分段錯誤。有人可以幫助我修改上述程序以獲得正確的結果。另外,在main
()中連續遞歸調用之間捕獲正確的rv
值的邏輯是什麼?
你爲什麼要明確地使用你認爲不好的東西? –
如何首先刪除seg-fault? –
@icepack:FUBAR - 由於任意遞歸而完全被upvoted –