求高手解释一下的这题Java题。。。。。//打印杨辉三角,用递归的方法(打印九行)

来源:百度知道 编辑:UC知道 时间:2024/05/31 23:20:24
//打印杨辉三角,用递归的方法(打印九行)
public class Yangsan {
public static void main(String args[]){
int i,j;
for(i=0;i<=9;i++){
for(j=0;j<=i;j++)
System.out.print(c(i,j)+"\t");
System.out.println();
}
}
static long c(int n,int k)
{
if(k<=0||k>=n)
return 1;
return(c(n-1,k)+c(n-1,k-1));
}
}
。。

可以说一下static long c(int n,int k)
{
if(k<=0||k>=n)
return 1;
return(c(n-1,k)+c(n-1,k-1));这段程序的详解吗?谢谢!!

这个不是利用传递参返回一个long类型的值嘛……

static long c(int n,int k)
{
if(k<=0||k>=n)
return 1;//if条件符合 执行这一句
return(c(n-1,k)+c(n-1,k-1));if条件不符合 按照传递进来的参数执行这一句

用递归解释
static long c(int n,int k)
{
if(k<=0||k>=n)
return 1;
else return(c(n-1,k)+c(n-1,k-1));

static long c(int n,int k)
{
if(k<=0||k>=n)
return 1;
return(c(n-1,k)+c(n-1,k-1));
递归调用:
当k<=0或k>=0时就直接返回数字1
当不为这两者时:
函数要调用它本身;
直到k<=0或k>=n
即返回1;
将其结果一层一层返回去