首页 > 解决方案 > 试图知道为什么这段代码会导致无限循环

问题描述

我一直在尝试获得一个数字的阶乘(f.ex: 4! = 24 [4 (3) (2) (1) = 24])。

我写了以下代码:

#include <stdio.h>

void TestAcomulador(int a, int factorizado, int *resultado);

int main(void) {
    int a, resultado, factorizado, sacaroperacion;
    printf("Introduzca un numero: ");
    scanf("%d", &a);
    TestAcomulador(a, factorizado, &resultado);
    printf("%d", resultado);
}

void TestAcomulador(int a, int numprincipal, int *factorizado) {
    numprincipal = --a;
    do {
        *factorizado = numprincipal * a;
        printf("The loop is here\n"); //LOOP IN THIS LINE
    } while (numprincipal > 0);
}

发生了什么事,我做错了什么?为避免将来出现此问题,我们将不胜感激,

提前致谢。

标签: c

解决方案


您不会在任何时候递减 numprincipal,因此它始终大于 0(假设您 a>=2)。

因此,while 循环的条件始终为真。


推荐阅读