本文概述
- A.迭代
- B.递归方式
文章图片
阶乘在数学中很重要, 因为它们在组合数学, 泰勒展开和数论中都遇到。例如, 阶乘n是一个人可以排列n个不同对象的方式的数量。如果你正在学习计算机科学, 编程中要解决的最常见任务之一就是如何获取数字的阶乘。
在本文中, 我们将说明如何使用非常简单的逻辑在C中获得正整数的阶乘。
A.迭代 执行和理解从n数获得阶乘的逻辑的最简单方法是使用for循环。你将需要定义一个for循环, 该循环将从1迭代到给定的n个数字。在每次迭代中, 最初具有1值的事实变量将使用其自身与当前迭代的索引相乘的结果进行更新。在以下示例中, 我们将提示你输入要计算的数字, 并在最后打印结果:
#include <
stdio.h>
int main(){// Note that initially, the fact variable is equals to 1int c, n, fact = 1;
// Prompt user for the number to calculate, it can be statically defined as fact if you want.printf("Enter a number to calculate its factorial: \n");
scanf("%d", &
n);
// Calculate factorialfor (c = 1;
c <
= n;
c++){fact = fact * c;
}// Print resultprintf("Factorial of %d is: %d\n", n, fact);
return 0;
}
你可以根据需要将其转换为函数:
#include <
stdio.h>
// declare method before using it to prevent error: conflicting types for 'factorial'long factorial(int);
// Usage example:int main(){int fact = 10;
// Prints: Factorial of 10 is: 3628800printf("Factorial of %d is: %d\n", fact, factorial(fact));
return 0;
}// Function that returns the factorial of a n numberlong factorial(int n){int c;
long result = 1;
for (c = 1;
c <
= n;
c++){result = result * c;
}return result;
}
B.递归方式 在编程中, 递归是一种函数调用自身的技术, 例如, 在下面的代码示例中, 阶乘函数将调用自身:
#include <
stdio.h>
// declare method before using it to prevent error: conflicting types for 'factorial'long factorial(int);
// Usage example:int main(){int fact = 10;
// Prints: Factorial of 10 is: 3628800printf("Factorial of %d is: %d\n", fact, factorial(fact));
return 0;
}// Function that returns the factorial of a n numberlong factorial(int n){if (n == 0){return 1;
}else{return(n * factorial(n-1));
}}
请注意, 在递归中必须定义函数。进行你的首选方式是什么?
【如何在C中获得数字的阶乘】编码愉快!
推荐阅读
- 如何在C中打印Pascal三角形
- 在Symfony 1.4中实现全局非静态辅助函数
- 如何解决FOSUserBundle异常(服务” fos_user.mailer”具有对不存在的服务”模板”的依赖)
- 如何在Silex项目中使用CLI清除缓存
- 如何解决C++错误C4996’getch’(不建议使用此项目的POSIX名称。而是使用符合ISO C和C ++的名称:_getch)
- 如何在自己的插件之前在Shopware中注册第三方插件的自定义模型
- 如何反序列化使用Doctrine存储在数据库中的DC2Type数组数据类型
- 如何在Symfony 3中生成通用唯一标识符(UUID)
- 如何在基于CLI的基于Unix的操作系统中使用TAR压缩整个目录(包括子目录)