题目描述
输入一个整数n,请你编写一个函数,int fact(int n),计算并输出n的阶乘。
输入格式
共一行,包含一个整数n。
输出格式
共一行,包含一个整数表示n的阶乘的值。
数据范围
1≤n≤10
样例
输入样例:
3
输出样例:
6
算法1
C++ 代码
#include<iostream>
using namespace std;
int f(int n)
{
int r = 1;
for(int i = 1; i <= n; i ++) r *= i;
return r;
}
int main()
{
int n;
cin >> n;
cout << f(n) << endl;
return 0;
}
副:由Anjor dalao提供的递归做法
#include<iostream>
using namespace std;
int fact(int n){
if(n<=1)return n;
return n*fact(n-1);
}
int main(){
int n;
cin>>n;
cout<<fact(n);
return 0;
}
垫底抽风提供主函数递归做法
#include <stdio.h>
int main(int n,bool f=true)
{
if(f)
{
scanf("%d",&n);
printf("%d",main(n,false));
return 0;
}
if(n)return main(n-1,false)*n;
return 1;
}
递归做法
谢谢大佬
主函数递归做法~
这......
有问题吗?
看不懂
主函数也可以自己递归,自己调用自己
主函数不是要求必须返回0吗???我测了一下会给一个警告
但是警告是说[Warning] second argument of ‘int main(int, bool)’ should be ‘char **’ [-Wmain]
好像不返回0也没问题
不懂