如何在C中获得数字的阶乘

本文概述

  • A.迭代
  • B.递归方式
根据定义, 非负整数的阶乘是以下小于或等于n的所有正整数的乘积, 如以下数学符号所示:
如何在C中获得数字的阶乘

文章图片
阶乘在数学中很重要, 因为它们在组合数学, 泰勒展开和数论中都遇到。例如, 阶乘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中获得数字的阶乘】编码愉快!

    推荐阅读