n是形式参数,它用来接受来自主函数的实参也就是当函数调用的时候fac(i)中的i来替换这里的n
当第一次调用的时候,i=1(实参)传给n(形参),n=1; f=fn就等于1=11;此时f=1;当第二次调用的时候,n=2,f=fn就是把fn等于12赋给f,此时f=2,依次类推
你能看懂吗
阶乘的结果,数值很大,要用double计算和存放。
打印整数部分就可以了。
# include <stdioh>
double jc(int n)
{
int i;
double x=10;
for (i=1;i<=n;i++) x = x (double) i;
return x;
}
void main()
{
int i,n;
double x;
printf("Please enter a number 1 to 10\n");
scanf("%d",&n);
x=jc(n);
printf("%0lf\n",x);
}
1、首先在打开的C语言软件窗口中,在Main函数的上方,写上阶乘函数的框架,如下图所示。
2、然后定义一个变量result,如下图所示。
3、然后输入if判断语句,就可以写下程序的关键语句,如下图所示。
4、接下来就可以调用输出,如下图所示。
5、最后点击运行,如下图所示,就可以运行测试。
n的阶乘就是从1到的累积,所以可以通过一个for循环,从1到n依次求积即可。
参考代码:
#include "stdioh"
int main() {
int n,i,s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)//for循环求累积
s=si;
printf("%d\n",s);
return 0;
}
/
运行结果:(例如求5的阶乘)
5
120
/
扩展资料:
return用法:
return返回一个数值的意思就是把return<表达式>后面表达式的值返回给调用他的函数。举个例子:
int sum(int i,int j)
{
return i+j;
printf("这个语句不会被执行,因为该子函数执行到上面的return语句就无条件结束了");
}
main()
{
int a=10,b=11,c;
c=sum(a,b);
printf("%d",c);
}
第一次调用时,f的初始值为1。f=11=1,返回1。
第二次调用时,f的初始值为1。f=12=2,返回2。
第三次调用时,f的初始值为2。f=23=6,返回6。
第四次调用时,f的初始值为6。f=64=24,返回24。
第五次调用时,f的初始值为24。f=245=120,返回120。
每一次调用时,调用函数中n的值是从
for(i=1;i<=5;++i)
printf("%d!=%d\n",i,fact(i));
里 i 的值复制过来的。
#include
<stdioh>
int
fun
(int
num)
{
if
(1==num)
{
return
1;
}
return
num
fun(num
-
1)
;
}
int
main()
{
int
result
=
fn
(5);
printf("5的阶乘的是:%d\n",result);
return
0;
}
fun并不是一个函数,只是你自定义函数的一个函数名而已
,本题中采用的是递归函数
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include"stdioh"
#include"stdlibh"
int main()
{
int n = 0;
printf("请输入一个数字: ");
scanf("%d",&n);
int i = 0;
int ret = 1;
int sum = 0;
for (i = 1; i <= n; i++)
{
ret = i;
sum += ret;
}
printf("%d\n",sum);
system("pause");
return 0;
}
扩展资料
阶乘计算功能关键算法
利用递归方法求5!
用递归方式求出阶乘的值。递归的方式为:
5!=4!5
4!=3!4
3!=2!3
2!=1!2
1!=1
即要求出5!,先求出4!;要求出4!,先求出3! … 以此类推。
注意:定义一个函数(或方法),用于求阶乘的值。
在主函数(或主方法)中调用该递归函数(或方法),求出5的阶乘,并输出结果。
package Third;
public class one {
public static void main(String args[]){
int n =5; //输入n的值
//n的阶乘的值为:factorial(n);
Systemoutprintln("5的阶乘是:" + factorial(n));
}
public static int factorial(int n){ //阶乘求解函数
if(n == 0){ //判断传进来的n是否为0,若为零返回阶乘为1
return 1;
}
return nfactorial(n-1); //重新调用函数,继续判断n-1是否为零,
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)