日期:2014-05-20  浏览次数:20666 次

java杨辉三角问题
我试着用递归去解决杨辉三角问题,但是总是出错,这段代码哪里出现问题了?
import java.util.Scanner;

public class Test {

public static void main(String[] args){
int n,i,j,h,k,m,Result;
Scanner scanner = new Scanner(System.in);

System.out.println("输入杨辉三角的行数:");
n=scanner.nextInt();

for(j=1;j<=n;j++){
for(h=1;h<=n-j;h++)  System.out.print(" ");
if(j==1) System.out.println(j);
else
for(i=0;i<j;i++){
if(i==0) System.out.print("1"+" ");
else{
k=i;
Result=DiGui1(n)/(DiGui2(k)*DiGui2(k));
System.out.print(Result+" ");
}
}

System.out.println();
}

}

static int DiGui1(int n){
if(n==1||n==0) return 1;
else  return n*DiGui1(n-1);
}

static int DiGui2(int k){
if(k==1||k==0) return 1;
else return k*DiGui2(k-1);
}



}

------解决方案--------------------
怎么出错了,说一下现象,是语法错了还是输出的结果不对?我运行了一下,好像可以出结果 
------解决方案--------------------
package ccit01;
import java.util.Scanner;
 
public class Test {

 public static void main(String[] args){
 int n,i,j,h,k,m,Result;
 Scanner scanner = new Scanner(System.in);

 System.out.println("输入杨辉三角的行数:");
 n=scanner.nextInt();

 for(j=0;j<=n;j++)
 {
 for(h=1;h<=n-j;h++)  
  System.out.print(" ");
 for(i=0;i<=j;i++){
 Result=DiGui(j)/(DiGui(j-i)*DiGui(i));
 System.out.print(Result+" ");
 }
 System.out.println();
 }
 }
 static int DiGui(int k){
 if(k==1
------解决方案--------------------
k==0) return 1;
 else return k*DiGui(k-1);
 }
}







楼主代码写的比较乱 比如其实不必要声明k,直接用i 楼主方法的调用也有点混乱,方法传参还没有明白,实值和虚值变量声明不用一样。这和实值的值有关。所以只声明一个递归方法就行。