我试着用递归去解决杨辉三角问题,但是总是出错,这段代码哪里出现问题了?
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 楼主方法的调用也有点混乱,方法传参还没有明白,实值和虚值变量声明不用一样。这和实值的值有关。所以只声明一个递归方法就行。