1) res..."."/> 1) res...".">

>백엔드 개발 >C#.Net 튜토리얼 >C 언어에서 n의 계승을 계산하는 방법

C 언어에서 n의 계승을 계산하는 방법

藏色散人
藏色散人원래의
2023-01-04 15:18:5922893검색

C 언어에서 n의 계승을 계산하는 방법: 1. "for (i = 1; i <= n; i++){fact *= i;}"와 같은 코드인 for 루프를 통해 계승을 계산합니다. 2. while 루프를 통해 계승값을 계산하려면 코드는 "while (i <=fact="" int="" res="n;if" n=""> 1)res..."와 같습니다.

C 언어에서 n의 계승을 계산하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, c99 버전, Dell G3 컴퓨터.

C 언어에서 n의 계승을 어떻게 계산하나요?

n의 계승을 찾는 C 언어:

n의 계승을 찾는 문제에 관해 먼저 질문을 보고 그 질문을 사용하여 돌파점을 찾아보겠습니다.

1. 문제

문제 설명

주어진 정수 n에서 팩토리얼인 0≤n≤12

Input

숫자 n을 입력하세요

Output

숫자 A 출력 n

Sample Input

5

Sample Output

120

2. Analysis

Factorial을 찾고 있으니 돌파구는 뻔합니다

획기적인 point는 : Factorial

factorial의 개념과 배경:

1️⃣Concept:

양의 정수의 계승은 해당 숫자보다 작거나 같은 모든 양의 정수의 곱이며, 0은 1입니다. 자연수 n의 계승은 n!으로 표시됩니다.

2️⃣배경:

1808년 크리스티안 크람프(1760~1826)가 이 표기법을 도입했습니다.

3️⃣ 계승 계산 방법:

1보다 크거나 같은 모든 자연수 n 계승 표현 방법:

n!=1×2×3×…×(n-1)×n 또는 n!= n× (n-1)!

참고: 0의 계승은 1, 즉 0입니다! =1.

1! = 1
2! = 2 * 1 = 2
3! = 3 * 2 * 1 = 6

n! = n * (n-1) *… * 2 * 1

먼저 코드로 구현해 본 후 아래 코드를 확인해 보세요.

3. 해결

C 언어로 구현된 n의 팩토리얼과 관련하여 현재 입문 단계에서는 주로 다음 두 가지 작성 방법을 사용합니다.

첫 번째: loop

①for loop

#include<stdio.h>int main(){
	int n;
	scanf("%d", &n);
	int fact = 1;
	int i;
	for (i = 1; i <= n; i++)
	{
		fact *= i;
	}
	printf("%d\n", fact);
	return 0;}
테스트 예시 : 5

1 * 2 * 3 * 4 * 5 = 120

5120--------------------------------Process exited after 1.475 seconds with return value 0请按任意键继续. . .

②while loop

#include<stdio.h>int main(){
	int n;
	scanf("%d", &n);
	int fact = 1;
	int i = 1;
	while (i <= n)
	{
		fact *= i;
		i++;
	}
	printf("%d\n", fact);
	return 0;}
테스트 예시 : 6

1 * 2 * 3 * 4 * 5 * 6 = 720

6720--------------------------------Process exited after 1.549 seconds with return value 0请按任意键继续. . .
두 번째 유형: 재귀(함수 자체 호출)
1️⃣작성 방법 1

#include <stdio.h>int Fact(int n);int main() //主函数{
    int n, cnt;
    scanf("%d", &n);
    cnt = Fact(n);
    printf("%d\n", cnt);
    return 0;}
    int Fact(int n)    //递归函数 
    {
    int res = n;
    if (n > 1)
        res = res * Fact(n - 1);
    return res;}
1️⃣写法一
75040--------------------------------Process exited after 2.563 seconds with return value 0请按任意键继续. . .

测试样例:7

7 * 6 * 5 * 4 * 3 * 2 * 1
= 1 * 2 * 3 * 4 * 5 * 6 * 7
= 5040

#include <stdio.h>int Fact(int n) //递归函数 {
    int res = n;
    if (n > 1)
        res = res * Fact(n - 1);
    return res;}int main() //主函数 {
    int n, cnt;
    scanf("%d", &n);
    cnt = Fact(n);
    printf("%d\n", cnt);
    return 0;}

当然也可以写成这样:

2️⃣写法二테스트 샘플: 7

7 * 6 * 5 * 4 * 3 * 2 * 1

= 1 * 2 * 3 * 4 * 5 * 6 * 7

= 5040

6720--------------------------------Process exited after 1.829 seconds with return value 0请按任意键继续. . .

물론 이렇게도 쓸 수 있습니다:

2️⃣작성 방법 2rrreee테스트 예: 6

6 * 5 * 4 * 3 * 2 * 1🎜 = 1 * 2 * 3 * 4 * 5 * 6🎜 = 720🎜rrreee🎜[관련 권장 사항: 🎜C 언어 비디오 튜토리얼🎜]🎜🎜

위 내용은 C 언어에서 n의 계승을 계산하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.