使 HTML 页面显示 n 行帕斯卡三角形,不能数组。将当前行推送到页面



我是 JavaScript 的新手,决定做一些练习来显示 Pascal 三角形的 n 行。我一切正常,行显示在控制台中,但是当我尝试将 currentRow 推送到三角形数组时,页面上没有显示任何内容。以下是我尝试这样做的方式:

if (typeof currentRow !== 'undefined') {
console.log('Row ', i - 2);
currentRow = currentRow.join('  ');
console.log(currentRow);
console.log(triangle);
triangle.push('n', currentRow)
triangle = triangle.join('');
}

任何帮助/建议将不胜感激。我确定这段代码不是那么有效(我知道只写出前 3 行不是最佳选择(。下面是一个代码片段和一个jsfiddle。

https://jsfiddle.net/keuo8za0/

var row0 = [1];
var row1 = [1, 1];
var row2 = [1, 2, 1];
row0 = row0.join(' ');
row1 = row1.join(' ');
row2 = row2.join(' ');
var triangle = [row0];
triangle.push('n', row1);
triangle.push('n', row2);
triangle = triangle.join('');
lastRow = [1, 2, 1];
var submit = document.getElementById('submit');
function buildTriangle(pascalNumber) {
for (let i = 4; i < pascalNumber; i++) {
if (typeof currentRow !== 'undefined') {
console.log('Row ', i - 2);
currentRow = currentRow.join('  ');
console.log(currentRow);
console.log(triangle);
}
var x = i;
var currentRow = [1, 1];
for (let y = 1; y + 1 < x; y++) {
var nextNumber = (lastRow[y - 1] + lastRow[y]);
currentRow.splice(1, 0, nextNumber);
}
lastRow = currentRow;
}
}
function drawTriangle() {
document.getElementById('triangle').innerText = triangle;
}
submit.onclick = function() {
var rownum = document.getElementById('pn').value;
buildTriangle(rownum - 1);
drawTriangle();
return false;
}
body {
background: #4286f4;
font-family: arial;
}
h1 {
font-size: 36px;
text-align: center;
}
h1:hover {
color: #ff35c5;
}
form {
font: sans-serif;
text-align: center;
}
p {
font-size: 36px;
font: sans-serif;
text-align: center;
}
#map {
margin: 0 auto;
width: 80%;
height: 80%;
}
<html>
<head>
<title>Pascal's Triangle</title>
<link rel="stylesheet" href="fancy.css" />
</head>
<body>
<h1>Pascal's Triangle</h1>
<form id='numberOfRows'>
Number of Rows:<br>
<input id='pn' type='number'><br>
<button id='submit'>Submit</button>
</form>
<p id='triangle'></p>
<script src="triangler.js"></script>
</body>
</html>

有趣...我一排一排地做了。从谷歌找到了非常好的帮助。

<style>
body {
background: #4286f4;
font-family: arial;
}
h1 {
font-size: 36px;
text-align: center;
}
h1:hover {
color: #ff35c5;
}
form {
font: sans-serif;
text-align: center;
}
p {
font-size: 36px;
font: sans-serif;
text-align: center;
}
#map {
margin: 0 auto;
width: 80%;
height: 80%;
}
</style>
<h1>Pascal's Triangle</h1>
<form id='numberOfRows'>
Number of Rows:<br>
<input id='pn' type='number'><br>
<button id='submit'>Submit</button>
</form>
<p id='triangle'></p>

<script>
var div = document.getElementById('triangle');
submit.onclick = function() {
div.innerHTML = "";  
var rownum = document.getElementById('pn').value;
printPascal(rownum);
return false;
};
function printPascal(n) {
// Iterate through every line and 
// print entries in it             
for (var line=0; line < n; line++) 
{ 
var lineHTML = "<div class='text-center'>";
// Every line has number of 
// integers equal to line 
// number 
for (var i = 0; i <= line; i++) {
lineHTML += "" + binomialCoeff(line, i) + " &nbsp; &nbsp; ";     
}
lineHTML += "</div>n";
div.innerHTML += lineHTML;        
}            
}
// for details of this function 
function binomialCoeff(n, k) 
{ 
var res = 1; 
if (k > n - k) 
k = n - k; 
for (var i = 0; i < k; ++i) 
{ 
res *= (n - i); 
res /= (i + 1); 
} 
return res; 
}         
</script>  

最新更新