个性化阅读
专注于IT技术分析

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

本文概述

根据定义, 非负整数的阶乘是以下小于或等于n的所有正整数的乘积, 如以下数学符号所示:

数学阶乘数字表示法

阶乘在数学中很重要, 因为它们在组合数学, 泰勒展开和数论中都遇到。例如, 阶乘n是一个人可以排列n个不同对象的方式的数量。如果你正在学习计算机科学, 编程中要解决的最常见任务之一就是如何获取数字的阶乘。

在本文中, 我们将说明如何使用非常简单的逻辑在C中获得正整数的阶乘。

A.迭代

执行和理解从n数获得阶乘的逻辑的最简单方法是使用for循环。你将需要定义一个for循环, 该循环将从1迭代到给定的n个数字。在每次迭代中, 最初具有1值的事实变量将使用其自身与当前迭代的索引相乘的结果进行更新。在以下示例中, 我们将提示你输入要计算的数字, 并在最后打印结果:

#include <stdio.h>

int main()
{
    // Note that initially, the fact variable is equals to 1
    int 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 factorial
    for (c = 1; c <= n; c++){
        fact = fact * c;
    }

    // Print result
    printf("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: 3628800
    printf("Factorial of %d is: %d\n", fact, factorial(fact));

    return 0;
}

// Function that returns the factorial of a n number
long 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: 3628800
    printf("Factorial of %d is: %d\n", fact, factorial(fact));

    return 0;
}

// Function that returns the factorial of a n number
long factorial(int n)
{
    if (n == 0){
        return 1;
    }else{
        return(n * factorial(n-1));
    }
}

请注意, 在递归中必须定义函数。进行你的首选方式是什么?

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何在C中获得数字的阶乘

评论 抢沙发

评论前必须登录!