C语言一到十的阶乘编程方法:
1.记一个变量sum=0,用于累加。
2.记一个变量fact=1,用于累乘。
3.定义i从1到10循环。
4.每次循环将i累乘至fact,即fact=fact*i// fact此时等于i的阶乘,类似于6!=5!*6。
5.每次循环将fact累加至sum,即sum=sum+fact//sum此时就是1到i的阶乘的和。
程序最后,将sum输出,就是你要的结果了。
要学会编程,一定要有自己的思路。直接给你代码,但是你还是不知其所以然的话,等于没用。
如果我没理解错的话,你现在要做的是计算1!+2!+3!+...+10!
这个世界上,绝大多数的程序,都是可以手算出来的,区别在于花费的时间不同。像这种只要完成九年义务教育就可以做出来的数学题,我现在让你手算,你也能很快算出来。
总结如下:
那现在,如果让你试着手算一下,会发现,你其实并不会呆板地去死算,你会偷懒走捷径。
比如,你在计算完5!之后,再去计算6!的时候,你就不会从头从1一直乘到6了,而是直接用已经算过的5!乘以6就可以了。
然后等你把1!到10!全算出来的话,其实也只是做了9次乘法而已,剩下的,就只要再做9次加法就好了。所以这个程序的本质就是累乘和累加。
在普通程序设计语言中实现累乘的算法是完全一样的。首先累乘器变量要赋初值为1,循环控制变量要赋初始值,然后循环进行,循环体中累乘器变量乘以循环控制变量完成以后,循环控制变量的值增1,直到超过累乘范围时循环结束。以计算n的阶乘为例,
f=1
i=1
while(i<=n)
f*=i++
#include <stdio.h>{
if(n<0)//输入数据检测
{
printf("输入数据n应>=0!\n")
return -1
}
if(n<=1) //0!=1,1!=1
return 1
else
return (n*fact(n-1))//递归调用
}
int main(int argc, char *argv[])
{
printf("5!=%ld\n",fact(10))//打印5!
return 0
}
c语言中,函数Func(Type a,……)直接或间接调用函数自身,则该函数称为递归函数。递归函数必须满足两个条件,
1、每一次调用函数自身都更接近于解;
2、函数 必须有一个明确的终止处理或计算的准则,比如本例中0!=1,1!=1。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)