c - 试图知道为什么这段代码会导致无限循环
问题描述
我一直在尝试获得一个数字的阶乘(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);
}
发生了什么事,我做错了什么?为避免将来出现此问题,我们将不胜感激,
提前致谢。
解决方案
您不会在任何时候递减 numprincipal,因此它始终大于 0(假设您 a>=2)。
因此,while 循环的条件始终为真。
推荐阅读
- python - 关于多对多过滤和组合查询集的非常奇怪的行为
- java - 在模拟的抽象类中注入模拟
- android - 从 TextInputLayout setError 文本中删除额外的填充/边距
- sql - 来自 ST_GeometryFromText(x) 的无效 WKT
- java - How to achieve array two-column exchange?
- javascript - (Javascript)如何将重复条目(项目、数量、价格)添加到现有数量?
- c - How to initiate two arrays storing 16 bits each and creating a third array by XOR on the first two in C?
- python - 将字典传递给Python中的两个子进程
- html - z-index: -1 的伪元素被背景色隐藏
- python - 在创建文件并将文件推送到 SFTP 服务器时,不清楚 Pysftp 或 Dropox 是否滞后?