递归与循环有相同之处,但是区别很大;代码简洁,但是理解复杂
通过题目来使用循环和递归,观察区别
提示用户输入一个正整数n,求出并输出下列结果:1! + 2! + 3! + 4! + ... + n!
要求:用至少两种方式实现(函数名自拟,函数个数不限)
① 非递归
② 递归
//非递归
int main(){
int n;
int sum = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++){
int num = 1;
for (int m = 1; m <= i; m++){
num = num*m;
}
sum += num;
}
printf("%d", sum);
system("pause");
return 0;
}
//递归
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>
//递归套递归
int digui2(int m){
if (m == 1){
return digui(m);
}
else
{
return digui(m) + digui2(m - 1);
}
}
int digui(int n){
if (n == 1)
return 1;
else
{
return n*digui(n - 1);
}
}
int main(){
int n;
scanf("%d", &n);
digui(n);
int sum = digui2(n);
printf("%d", sum);
system("pause");
return 0;
}