本帖最后由 柳雷 于 2012-7-25 09:19 编辑
这是一个典型使用递归调用的例子
要知道第x行y列位置的元素,必须使用第x-1行第y-1列和第y列的元素相加得到,递归的结束条件是y=1或者y=x+1
所以就可以写出程序:- public class Test {
- public static void main(String[] args)
- {
- int i,j,n=13;
- for(i=0;i<=n;i++) /*控制输出N行*/
- {
- for(j=0;j<24-2*i;j++)
- System.out.print(" "); /*控制输出第i行前面的空格*/
- for(j=1;j<i+2;j++)
- System.out.print(toFour(c(i,j))); /*输出第i行的第j个值*/
- System.out.print("\n");
- }
- }
- static int c(int x,int y) /*求杨辉三角形中第x行第y列的值*/
- {
- int z;
- if((y==1)||(y==x+1))
- return 1; /*若为x行的第1或第x+1列,则输出1*/
- z=c(x-1,y-1)+c(x-1,y); /*否则,其值为前一行中第y-1列与第y列值之和*/
- return z;
- }
- static String toFour(int s){//把数字转换成4个字符进行格式化输出
- String ss=""+s;
- if(ss.length()==1)ss=ss+" ";
- if(ss.length()==2)ss=ss+" ";
- if(ss.length()==3)ss=ss+" ";
- return(ss);
- }
- }
复制代码 运行结果:
|