c - 使用递归的阶乘程序返回错误值

标签 c recursion factorial

我正在尝试使用递归计算阶乘,但我的程序返回错误的值。我无法理解递归功能。请帮助我理解递归是如何工作的。我的代码如下:

#include <stdio.h>
#include <math.h>

int main() 
{
    //code
    int T,N,sol;
    scanf("%d\n",&T);

    while(T--) {
        scanf("%d\n",&N);

        sol=fact(N);
        printf("%d\n",sol);
    }

    return 0;
}

int fact(int n)
{
    int value;
    while(n>0) {
        value=n*fact(n-1);
        n=n-1;
    }

    return value;
}

最佳答案

用这个函数替换你的事实函数:

int fact(int n)
{
    int value = 1;
    if(n>0)
    {
        value=n*fact(n-1);
    }
    return value;
}

关于c - 使用递归的阶乘程序返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38759486/

相关文章:

c - 在C中递归地查找给定字符串中某个字符的最后一次出现

java - 递归插入时是否会重建二叉搜索树?

java - Java 递归前缀解析器阶乘

带有线程池的Java阶乘计算

java - 使用 do - while 循环进行阶乘。 num1 变量变得等于 0,但同时的条件是 num1>=1。这是如何运作的?

c - gcc -D_REENTRANT 到底做了什么?

javascript - 从深度未知的嵌套数组中删除项目

c - 使用 fscanf 从文件中读取一个整数

c - 迭代C 中的main 函数?

c++ - C/C++ 是否提供最短执行时间的任何保证?