作为一名应届毕业生,算法不是那么的大神,但充分体现了我半个数学生的身份,hhhhh,我们知道杨辉三角每个数等于它上方两个数之和,刚开始我就很老实,搞了一个二维数组列出杨辉三角n行的所有数,后来我发现当n大于一定值后就会数组溢出,作为一名半个数学系的人我怎么可以忍受得了这个限制,然后我发现杨辉三角第n行第m列的值无C(n-1,m-1),那为何不用这个公式求解。用这个公式那就要牵扯到阶乘的问题,但是吧,int类型只能求20 以内的阶乘,long类型只能求到50以内的阶乘,这又有的限制,那现在只好研究研究大数阶乘的问题,enmmmmm,这下就成了大数阶乘大数相除的算法研究了,我是利用数组存数据,然后利用数组进行大数相乘以及大数相除;话不多说,上代码。欢迎大家来讨论更优化的算法。
这里写代码片
public class GetYangShuZhi {
//杨辉三角第n行第m列的值为C(n-1,m-1)=n!/m!*(n-m)!
public static String getYSnumber(int n,int m)
{
n–;
m–;
int[] beichushu;
int[] chushu;
if(n-m>=m){
beichushu = Getnumber.method(n, n-m+1);//获取被除数
System.out.print("被除数");
for(int i=0;i<beichushu.length;i++){
System.out.print(beichushu[i]);
}
System.out.println();
System.out.print("除数");
chushu = Getnumber.method(m, 1);
for(int i=0;i<chushu.length;i++){
System.out.print(chushu[i]);
}
System.out.println();
}else{
beichushu = Getnumber.meth

博主分享了在处理大数情况下,如何求解杨辉三角第n行第m列的值。通过公式C(n-1, m-1)简化计算,但遇到大数阶乘问题。采用大数相乘和相除算法,存储数据用数组,并给出部分代码实现。邀请读者探讨更优算法。"
103552640,8391364,HR面试技巧与策略,"['面试技巧', '职业发展', '自我评估', '技术热情', '沟通能力']
最低0.47元/天 解锁文章
370

被折叠的 条评论
为什么被折叠?



