 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
朱育興
註冊時間: 2003-08-25 文章: 661 來自: 台中市大里區
第 1 樓
|
發表於: 星期五 一月 23, 2004 9:59 pm 文章主題: [原創]楊輝三角形 ( PASCAL 三角形 ) |
|
|
代碼: |
FUNCTION F_PascalTriangle
* 楊輝三角形 ( PASCAL 三角形 )
* ------------------------------------------------- *
* 2004.01.23 朱育興 YSC E-MAIL:y5096@ms23.hinet.net
* ------------------------------------------------- *
LPARAMETERS L_nFrequency
LOCAL W1_cSString,W1_cCString,W1_nFrequency,W1_nMaxWidth,W1_aFrequency
LOCAL W1_nSUB_A,W1_aOneOfFrequency,W1_nSUB_B,W1_nLen,W1_cString
IF !TYPE("L_nFrequency") = "N"
L_nFrequency = 0
ENDIF
W1_cSString = " 0123456789" && 供 CHRTRANC 函數使用
W1_cCString = " 0123456789" && 同上
W1_nFrequency = INT(ABS(L_nFrequency)) && 次方數
W1_nMaxWidth = 1 && 最大位數
*
DIMENSION W1_aFrequency[W1_nFrequency+1,W1_nFrequency+1]
STORE 0 TO W1_aFrequency
* 處理 0 次方
W1_aFrequency[1,1] = 1
* 處理 1 到 W1_nFrequency 次方
FOR W1_nSUB_A = 1 TO W1_nFrequency
DIMENSION W1_aOneOfFrequency[1,W1_nFrequency+1]
STORE 0 TO W1_aOneOfFrequency
FOR W1_nSUB_B = 1 TO W1_nFrequency
W1_aOneOfFrequency[1,W1_nSUB_B+1] = W1_aFrequency[W1_nSUB_A,W1_nSUB_B]
ENDFOR
FOR W1_nSUB_B = 1 TO W1_nFrequency+1
W1_aFrequency[W1_nSUB_A+1,W1_nSUB_B] = W1_aFrequency[W1_nSUB_A,W1_nSUB_B] + ;
W1_aOneOfFrequency[1,W1_nSUB_B]
W1_nLen = LEN(LTRIM(STR(W1_aFrequency[W1_nSUB_A+1,W1_nSUB_B])))
W1_nMaxWidth = MAX(W1_nMaxWidth,W1_nLen)
ENDFOR
ENDFOR
FOR W1_nSUB_A = 1 TO W1_nFrequency+1
? REPLICATE(" ",(W1_nFrequency+1-W1_nSUB_A)*W1_nMaxWidth)
FOR W1_nSUB_B = 1 TO W1_nFrequency+1
IF W1_aFrequency[W1_nSUB_A,W1_nSUB_B] = 0
EXIT
ENDIF
W1_cString = LTRIM(STR(W1_aFrequency[W1_nSUB_A,W1_nSUB_B]))
?? CHRTRANC(PADL(W1_cString,W1_nMaxWidth),W1_cSString,W1_cCString)
IF !W1_nSUB_B = W1_nFrequency + 1
?? REPLICATE(" ",W1_nMaxWidth)
ENDIF
ENDFOR
ENDFOR
RETURN SPACE(0)
|
|
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|