C++怎么算阶乘
3个回答
展开全部
这个问题可以这样理解,数字是由表示数值的字符,和相应的一个排列组成的,而这个字符在通常情况下是由一个字符组成的,比如0~9,a~z,A~Z,单是这种表示方法无论如何都是有限制的,因为人为创造的计算机用的单个字符是有限的。那么可以用一个数组表示一个数字,而数组中的一个元素表示一个数字的字符,每个元素同样可以使用一个数组来表示,这样循环下去,就成了一个无限大的数字了。但是这样的数字,在计算过程中,需要自己去考虑符号、进位、借位、溢出、等计算问题。你所给出的代码就是一种这样的表达形式。
将一个数表示为多个位数组成的一个数组(f[]),乘法按照由低位到高位,当前位(f[j])和某一数(i)相乘,得到一个结果(s),这个结果和当前位的最大值做除法,商为高一位的数值,也就是进位(c),余数为此位的数值;此时如果高一位的数值仍然大于该位的最大值,继续做除法,商为更高一位的数值,余数(s%10)为该位的数值,以此类推。也就是内循环所表示的意思。
外循环所表示的就是从1开始连续做乘法,一直乘到n。
下边那个循环是将结果输出。
不过就目前看来你所给出的代码,仍然有溢出的问题,最大只能表示一个3000位的十进制数字。
将一个数表示为多个位数组成的一个数组(f[]),乘法按照由低位到高位,当前位(f[j])和某一数(i)相乘,得到一个结果(s),这个结果和当前位的最大值做除法,商为高一位的数值,也就是进位(c),余数为此位的数值;此时如果高一位的数值仍然大于该位的最大值,继续做除法,商为更高一位的数值,余数(s%10)为该位的数值,以此类推。也就是内循环所表示的意思。
外循环所表示的就是从1开始连续做乘法,一直乘到n。
下边那个循环是将结果输出。
不过就目前看来你所给出的代码,仍然有溢出的问题,最大只能表示一个3000位的十进制数字。
2019-10-07 · 百度认证:云南新华电脑职业培训学校官方账号
云南新华电脑学校
云南新华电脑学校是经云南省教育厅批准成立的省(部)级重点计算机专业学校,采用三元化管理模式,教学设备先进,师资雄厚学生毕业即就业,学院引进了电商企业入驻,创建心为电商创业园区,实现在校即创业
向TA提问
关注
展开全部
递归,但是不能算得太大,否则会造成堆栈溢出
int GetResult(int m)
{
if(m == 1 || m == 0) return 1;
return m*GetResult(m-1);
}
int GetResult(int m)
{
if(m == 1 || m == 0) return 1;
return m*GetResult(m-1);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
具体我能够提供。
追问
大哥怎么弄呀
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |