黑马程序员技术交流社区
标题:
如何输出杨辉三角形?
[打印本页]
作者:
张耀扬
时间:
2014-4-9 22:12
标题:
如何输出杨辉三角形?
要求输出杨辉三角形的前5行, 这个怎么做?
Java编程思想第4版.zip
2014-4-9 21:37 上传
点击文件名下载附件
1.83 MB, 下载次数: 96
作者:
leon_hm
时间:
2014-4-10 08:26
public class Yanghui {
public static void main(String[] args) {
// TODO Auto-generated method stub
Yanghui(5);
}
public static void Yanghui(int value)
{
if (value < 3)
{
System.out.println("请重新输入数组大于3的值!");
}
else
{
int[][] arry = new int[value][value];
System.out.println("杨辉三角形:");
for (int i = 0; i < value; i++)
{
String str = "";
str = padLeft(str,value - i, '\t');
System.out.print(str);
for (int j = 0; j <= i; j++)
{
if (i == j || j == 0)
{
arry[i][j] = 1;
}
else
{
arry[i][j] = arry[i - 1][ j - 1] + arry[i - 1][ j];
}
System.out.print(arry[i][ j] + "\t\t");
}
System.out.println();
}
}
}
public static String padLeft (String str ,int size ,char c) {
if (str == null)
str = "";
int str_size = str.length();
int pad_len = size - str_size;
StringBuffer retvalue = new StringBuffer();
for (int i = 0; i < pad_len; i++) {
retvalue.append(c);
}
return retvalue.insert(0, str).toString();
}
}
复制代码
作者:
张耀扬
时间:
2014-4-10 11:57
leon_hm 发表于 2014-4-10 08:26
谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
作者:
luoyilan222
时间:
2014-4-10 15:30
public class Yanghui{
public static void main(String [] args){
int[][] a=new int[20][20];
for(int i=0;i<5;i++){
a[i][0]=1;
System.out.print(a[i][0]+" ");
for(int j=0;j<i;j++)
{
a[i+1][j+1]=a[i][j]+a[i][j+1];
System.out.print(a[i+1][j+1]);
System.out.print(" ");
}
System.out.println(" ");
}
}
}
作者:
小歪
时间:
2014-4-10 23:38
/*9.杨辉三角形
在屏幕上显示杨辉三角形
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
*问题分析与算法设计
杨辉三角形中的数,正是(x+y)的N次方幂展开式各项的系数。
本题作为程序设计中具有代表性的题目,求解的方法很多,这里仅给出一种。
从杨辉三角形的特点出发,可以总结出:
1)第N行有N+1个值(设起始行为第0行)
2)对于第N行的第J个值:(N>=2)
当J=1或J=N+1时:其值为1
J!=1且J!=N+1时:其值为第N-1行的第J-1个值与第N-1行第J个值之和
将这些特点提炼成数学公式可表示为:
当x=1或x=N+1时,c(x,y)=1
当x=其他时,c(x,y)=(x-1,y-1)+c(x-1,y)
*/
import java.io.*;
class Num9{
public static void main(String args[])throws Exception
{
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入行数(<=13):");
int n=Integer.parseInt(buf.readLine());
if(n>13||n<1) {System.out.println("数值错误!");}
else
{
for(int i=0;i<n;i++)
{
for(int k=0;k<24-2*i;k++) {System.out.print("*");}
for(int j=1;j<=i+1;j++)
{
System.out.printf("%4d",c(i,j));
}
System.out.println();
}
}
}
public static int c(int x,int y)
{
int z;
if(y==1||y==1+x) return 1;
else z=c(x-1,y-1)+c(x-1,y);
return z;
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2