C language cycle and recursive factorial diagram

C language loop and recursion to find factorial detailed explanation

Cycle factorial

#include<stdio.h>
#include<stdlib.h>
int Factorial1(int a) {
    
    //求a的阶乘
		int sum = 1;//定义一个变量存储阶乘值
		for (int i = 1; i <= a; i++) {
    
    //定义i做循环
			sum = sum * i;
		}
		return sum;
	}
	int main(){
    
    
	int a;
	printf("请输入要求的阶乘数:\n");
	scanf("%d", &a);
	printf("%d",Factorial1(a));
	system("pause");
	return 0;
}

The loop factorial is to find an intermediate variable to store the result of the loop multiplication.

Recursive factorial

#include<stdio.h>
#include<stdlib.h>
int Factorial2(int a){
    
    
	if (a == 1){
    
    
		return 1;
	}
	return a*Factorial2(a - 1);
}
	int main(){
    
    
	int a;
	printf("请输入要求的阶乘数:\n");
	scanf("%d", &a);
	printf("%d",Factorial2(a));
	system("pause");
	return 0;
}

Insert picture description here
The idea of ​​recursive solution is to go deep into the recursion step by step, and then go to the outside of the loop to get the value after the end condition comes.

Guess you like

Origin blog.csdn.net/zhaocx111222333/article/details/109535250