Ответ 1
public static long pascalTriangle(int r, int k)
{
if(r == 1 || k <= 1 || k >= r) return 1L;
return pascalTriangle(r-1, k-1) + pascalTriangle(r-1, k);
}
Этот метод позволяет найти k-ое значение r-й строки.
Назначение - создать Треугольник Паскаля без использования массивов. У меня есть метод, который создает значения для треугольника ниже. Метод принимает целое число для максимального количества строк, которые пользователь хочет распечатать.
public static void triangle(int maxRows) {
int r, num;
for (int i = 0; i <= maxRows; i++) {
num = 1;
r = i + 1;
for (int col = 0; col <= i; col++) {
if (col > 0) {
num = num * (r - col) / col;
}
System.out.print(num + " ");
}
System.out.println();
}
}
Мне нужно отформатировать значения треугольника так, чтобы он выглядел как треугольник:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
Я не могу для жизни понять, как это сделать. Пожалуйста, ответьте, имея в виду, что я новичок в программировании на Java.
public static long pascalTriangle(int r, int k)
{
if(r == 1 || k <= 1 || k >= r) return 1L;
return pascalTriangle(r-1, k-1) + pascalTriangle(r-1, k);
}
Этот метод позволяет найти k-ое значение r-й строки.
Это хорошее начало, где это домашнее задание, я оставлю вам остальное:
int maxRows = 6;
int r, num;
for (int i = 0; i <= maxRows; i++) {
num = 1;
r = i + 1;
//pre-spacing
for (int j = maxRows - i; j > 0; j--) {
System.out.print(" ");
}
for (int col = 0; col <= i; col++) {
if (col > 0) {
num = num * (r - col) / col;
}
System.out.print(num + " ");
}
System.out.println();
}
В каждой строке вам нужно распечатать:
n
пробелыm
numbersn
пробелыВаша задача - определить n
(который будет равен нулю в последней строке) и m
на основе row number
.
[Это больше похоже на комментарий, но мне нужны были больше параметров форматирования, чем комментарии)
Вам нужно распечатать пробелы (как и другие, упомянутые выше), а также, поскольку это домашнее задание. Я оставляю его вам, но вы можете посмотреть на эту удобную небольшую функцию.
System.out.printf();
Вот справочное руководство
Также обратите внимание, что вам нужно будет учесть, что некоторые цифры длиннее 1 цифры!
import java.util.*;
class Mine
{
public static void main(String ar[])
{
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
for(int i=1;i<n;i++)
{
int size=1;
for(int j=1;j<=i;j++)
{
int a[]=new int[size];
int d[]=new int[size];
for(int k=1;k<=size;k++)
{
a[1]=1;
a[size]=1;
for(int p=1;p<=size;p++)
{
d[p]=a[p];
}
if(size>=3)
{
for(int m=2;m<size;m++)
{
a[m]=d[m]+d[m-1];
}
}
}
for(int y=0;y<size;y++)
{
System.out.print(a[y]);
}
System.out.println(" ");
}
++size;
}
}
}
public class HelloWorld{
public static void main(String []args){
int s=7;
int k=1;
int r;
for(int i=1;i<=s;i++){
int num=1;
r=i;
int col=0;
for(int j=1;j<=2*s-1;j++){
if(j <= s-i)
System.out.print(" ");
else if(j >= s+i)
System.out.print(" ");
else{
if(k%2 ==0){
System.out.print(" ");
}
else{
if (col > 0) {
num = num * (r - col) / col;
}
System.out.print(num+" ");
col++;
}
k++;
}
}
System.out.println("");
k=1;
}
}
}
Вы можете попробовать этот код в java. Это просто:)
public class PascalTriangle {
public static void main(String[] args) {
int rows = 10;
for(int i =0;i<rows;i++) {
int number = 1;
System.out.format("%"+(rows-i)*2+"s","");
for(int j=0;j<=i;j++) {
System.out.format("%4d",number);
number = number * (i - j) / (j + 1);
}
System.out.println();
}
}
}
public static void main(String[] args)
{
int a, num;
for (int i = 0; i <= 4; i++)
{
num = 1;
a = i + 1;
for(int j=4;j>0;j--)
{
if(j>i)
System.out.print(" ");
}
for (int j = 0; j <= i; j++)
{
if (j > 0)
num = num * (a - j) / j;
System.out.print(num + " ");
}
System.out.println();
}
}
Код отлично печатает треугольник pascal