C语言的代码 阶层问题

C语言的代码 阶层问题,第1张

首先,这个叫做“阶乘”而不是“阶层”。
其次,return 1是因为 0! = 1,数学上就是这么定义的,这个和C语言无关。
递归有两个阶段,第一阶段是反复地调用自身,直到触发终止条件;第二阶段是,逐层计算并返回调用结果。
就拿你这个例子来说,假设要计算4的阶乘,首先是递归地调用自身:
4! = func(4), 此时n为4大于0,所以func(4) = 4 func(4-1) = 4func(3)
同样地:
3! = func(3) = 3func(3-1) = 3func(2)
2! = func(2) = 2func(2-1) = 2func(1)
1! = func(1) = 1func(1-1) = 1func(0)
这时注意了,当计算func(0)时,n=0,触发边界条件,所以递归调用停止,return 1。
接下来,就是以相反的顺序,,逐层返回结果了:
0! = func(0) = 1
1! = func(1) = 1func(0) = 11 = 1
2! = func(2) = 2func(1) = 21 = 2
3! = func(3) = 3func(2) = 32 = 6
4! = func(4) = 4func(3) = 46 = 24
这样就得到了最终的结果:24。

#include "stdioh"
double diao(int k)
{ double l=1;
int j=1;
for(;j<=k;j++)
l=j;
return l;
}
main()
{ int q=1,i=1;
for( ;q<=20;q++)
{ if(i%7==0)printf("\n");
printf(" %0lf ",diao(q));i++;
}
}
不知道你是不是求1-20个数各自的阶层,如果是全部的,你用一个语句将它们全加起来就可以了

思路:先定义一个函数用来计算一个数的阶乘,在从1到N循环依次就其累加和,最后输出累加和即可。

参考代码:例如求1到3的阶乘累加和。

#include "stdioh" 
int fun(int n){
if(n==1) return 1;
else return nfun(n-1);

#include "mathh"
int main() {
int n,sum=0,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum+=fun(i);
printf("%d\n",sum);
  return 0;
}
/
运行结果:
3
9
/

在c语言中没有阶乘这个概念,他只是把前一个值付给另一个变量的值,
在用到阶乘的时候,肯定要用到循环结构,
比如求4!,先定义几个变量,sum,i,这个sum表示4!的结果,这个i表示循环的次数,
#include<stdioh>
void main()
{ int sum=0,i,a,j=1;
printf("请输入一个要求的阶乘数:");
scanf("%d",&a);
for(i=1;i<=a-1;i++)
{j=ij; //这个j存放的是前面计算的值,
} printf("%d\n",sum);

临时帮你写了个函数,你套下就可以了比如把i =5,或者者其它数
//开始复制,我写了两个,这个是JS,你可以复制到记事本,反后缀改成html保存,用浏览器打开,可以验证下
//,因为各种语言是相通的后面那一个是C语言标准
<script>
jc = function (i)
{ jg = 1;
for(j=1;j<=i;j++)
{
jg = j;
}
return jg;
}
alert(jc(5));//这里填写了5,当然可以换成其它的了
</script>
//结束
::以下是C语言,复制后改成C用VC打开他运行即可
::START,写是个函数,你应该会调用吧直接jc (N),N是你想要计算的数值
int jc function (i) {
int jg=1;
for (j=1;jg<=i;j++)
{
jg =j;
}
return jg;
}
::END


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13254345.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-27
下一篇 2023-06-27

发表评论

登录后才能评论

评论列表(0条)

保存