>level;yanghuiTriangle(level);return0;}易語言輸出來自易語言自帶的例子。
以下為全文。
.版本2
.程序集啟動窗口程序集
.程序集變數帕斯卡三角階數,整數型,,,帕斯卡三角行數
.程序集變數帕斯卡三角,文本型,,,形成的帕斯卡三角
.子程序__啟動窗口_創建完畢
'使用演演算法:遞歸調用
'問題:求帕斯卡(楊輝)三角
'問題描述:取N階的帕斯卡(楊輝)三角並顯示
'問題分析:
' 運用遞歸的方法取N層帕斯卡三角,並顯示。三角形邊界上的數都是1,內部的每個數是位於它上面的兩個數之和。
' 三角形邊界上的數都是1,內部的每個數是位於它上面的兩個數之和。假設f(row,col)表示楊輝三角的第row行的第col個元素,那麼:f(row,
col)=1(col=1或者row=col),也就是
遞歸的停止條件。f(row,col)=f(row-1,col-1)+f(row-1,col),也就是上一行的兩個相鄰元素的和。遞歸調用求解。
'備註:
.子程序_計算圖形按鈕_被單擊
.局部變數行數,整數型,,,帕斯卡三角行數
.局部變數列數,整數型,,,帕斯卡三角列數
.局部變數詢問返回,整數型,,,信息框返回的結果
編輯框2.內容=“”
帕斯卡三角=“”
'判斷輸入的值
.判斷開始(編輯框1.內容=“”)
信息框(“輸入錯誤!”,0,)
'當數值過大時,給出提示
.判斷(到數值(編輯框1.內容)>20)
詢問返回=信息框(“您輸入的數值過大,處理數據時程序將會有一段時間無響應,是否繼續?”,#是否鈕+#詢問圖標,“請問:”)
.如果真(詢問返回=#是鈕)
'如果確定,調用求帕斯卡三角
求帕斯卡三角()
.如果真結束
'數據較小時調用求帕斯卡三角
.判斷(編輯框1.內容≠“”且到數值(編輯框1.內容)≤20)
求帕斯卡三角()
.默認
.判斷結束
.子程序求帕斯卡三角
.局部變數行數,整數型,,,帕斯卡三角行數
.局部變數列數,整數型,,,帕斯卡三角列數
'要求的帕斯卡三角的總行數
帕斯卡三角階數=到數值(編輯框1.內容)-1
.變數循環首(0,帕斯卡三角階數,1,行數)
.變數循環首(0,行數,1,列數)
'取帕斯卡三角元素放到當前行里
帕斯卡三角=帕斯卡三角+到文本(取帕斯卡三角元素(行數+1,列數+1))+“,”
.變數循環尾()
帕斯卡三角=取文本左邊(帕斯卡三角,取文本長度(帕斯卡三角)-1)+#換行符
'沒層需去尾都好加換行符
.變數循環尾()
'顯示結果
編輯框2.內容=帕斯卡三角
.子程序取帕斯卡三角元素,整數型,,取帕斯卡三角中元素的子程序
.參數行數,整數型,,帕斯卡三角行數
.參數列數,整數型,,帕斯卡三角列數
.如果(列數=1或行數=列數)
'每行的外圍兩個元素為1
返回(1)
.否則
'其餘的部分為上一行的(行數-1)和(行數)元素之和
返回(取帕斯卡三角元素(行數-1,列數-1)+取帕斯卡三角元素(行數-1,列數))
.如果結束
header("Content-Type:text/html;charset=UTF-8");
functionyhsj($ln)
{
$int=1;
if($ln<3)
{
die('請輸入大於2的值!');
}
$arr=array();
$arr[1][1]=$int;
$ints=str_pad(" ",($ln-1)*12," ");
echo$ints.$int."
";
for($i=2;$i<=$ln;$i++)
{
for($j=1;$j<=$i;$j++)
{
if($j==1)
{
echostr_pad(" ",($ln-$i)*12," ");
}
echo$arr[$i][$j]=$arr[$i-1][$j]+$arr[$i-1][$j-1];
echo" ";
}
echo"
";
}
}
yhsj(3);
?>