用c语言编程求1!+2!+10!就这3个注意:求1!+2!+10!就只有这三个
如有帮助,望点击我回答右上角[采纳]支持一下。
#include <stdio.h>
long jiecheng(int n)
{
int sum =1,i;
for (i = 1; i <=n; i++)
{
sum *= i;
}
return sum;
}
void main()
{
double sum ;
sum = jiecheng(1)+jiecheng(2)+jiecheng(10);
printf("%f",sum);
}
#include<stdio.h>
int jc(int n){
int y;
if(n==1){
return 1;
}
else
y=jc(n-1)*n;
return y;
}
int main()
{
int i,x,n;
printf("%d",jc(1)+jc(2)+jc(10));
return 0;
}
这是用汇编实现的,可能更清晰一点
.LC0:
.string "1! +2! +10! = %d\n"
.globl main
f:
pushq %rbp
movq %rsp,%rbp
subq $0x1000,%rsp
movl %edi,-0x1000(%rbp) /* i */
cmpl $1,-0x1000(%rbp)
jne .Lf_400
movl $1,%eax
jmp .Lf_0
.Lf_400:
movl -0x1000(%rbp),%eax /* i */
subl $1,%eax
movl %eax,%edi
movl $0,%eax
call f
imull -0x1000(%rbp),%eax /* i */
jmp .Lf_0
movl $0,%eax
.Lf_0:
movq %rbp,%rsp
popq %rbp
ret
main:
pushq %rbp
movq %rsp,%rbp
subq $0x1000,%rsp
movl $1,%edi
movl $0,%eax
call f
movl %eax,%ecx
movl $2,%edi
movl $0,%eax
call f
addl %ecx,%eax
movl %eax,%ecx
movl $10,%edi
movl $0,%eax
call f
addl %ecx,%eax
movl %eax,%esi
leaq .LC0(%rip),%rdi
movl $0,%eax
call printf
movl $0,%eax
movq %rbp,%rsp
popq %rbp
ret
运行结果: 1! +2! +10! = 3628803