Если вы хотите избежать вычислений, сохранения и отображения значений NaN
, вы можете изменить границы цикла в j
, чтобы перейти с 1:i
вместо 1:x
:
pascals_triangle <- function(x) {
for (i in 1:x) {
holder <- c()
n <- i - 1
for (j in 1:i) {
r <- j - 1
nCrlessone <- factorial(n)/(factorial(n-r)*factorial(r))
holder <- c(holder, nCrlessone)
}
print(holder)
}
}
pascals_triangle(10)
[1] 1
[1] 1 1
[1] 1 2 1
[1] 1 3 3 1
[1] 1 4 6 4 1
[1] 1 5 10 10 5 1
[1] 1 6 15 20 15 6 1
[1] 1 7 21 35 35 21 7 1
[1] 1 8 28 56 70 56 28 8 1
[1] 1 9 36 84 126 126 84 36 9 1
Это изменение гарантирует, что вы вычисляете только нижнюю поддиагональ.