编程实现计算n!,也就是n*(n-1)*(n-2)*....*1,可以通过递归函数来实现,具体实现方法:
#include <stdio.h>
int Func(int n)
{
if(n <2)
return 1
else
return n*Func(n-1)
}
void main()
{
int n =0,m=0
printf("铅凳请输入一个正整数:")
scanf("%d",&n)
m=Func(n)
printf("%d!=%d\n",n,m)
}
在以上程序代码中,Func()为递归函数,主函数main()中接收键盘输入整数值后,调用Func()递归函数,首层m=n*(n-1)!,继续递归调用,m=n*(n-1)(n-2)!,这样逐层递归,直到计算出N!。
程序输出结果如下:
扩展资料:
所谓n的阶乘就是从1到n的乘积,所喊逗以除了递归法来实现以外,其实我们也可以通过一个for循环,从1到n依次求积同样可以达到计算n!的郑激卖目地。
具体实现代码如下:
#include <stdio.h>
int main() {
int n,i,s=1
scanf("%d",&n)
for(i=1i<=ni++)//for循环求累积
s=s*i
printf("%d\n",s)
return 0
}
/*
运行结果:(例如求5的阶乘)
5
120
*/
import java.util.Scannerpublic class Text{
public static 橘如void main(String args[]){
System.out.println("请输入n")
铅伍雀 Scanner sc = new Scanner(System.in)
int n= sc.nextInt()
int t=1
int i=1
while(i<=n){
t=i*t
槐早 i=i+1
}
System.out.println("n!="+t)
}
}
//补充,JAVA文件保存时文件名必须和类名相同。
#include <stdio.h>long fun(int n){
if(n == 0 || n == 1) return 1
return n*(fun(n-1))
}
int main()
{
int n
纳盯 printf("Input n:")
消茄和 scanf("%d",&n)
拿盯 printf("%d!=%ld\n",n,fun(n))
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)