コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
こういち ◆ou0jbJnEJ0Kb
2026/5/12 8:01
DIM STACK%[1024],RET%[1024] 'スタック,戻り値
VAR SLEN%,RLEN%
DEF DUMB_FIB N OUT M
 RLEN%=0 'RETは空
 SLEN%=1:STACK%[0]=N 'STACK%はNをpush(最初の呼び出し)
 WHILE SLEN%>0 'スタックが空になるまで
  SLEN%=SLEN%-1:N=STACK%[SLEN%] 'POP
  IF 0==N THEN '引数が0
   RET%[RLEN%]=0:RELN%=RLEN%+1 '0を返す
  ELSEIF 1==N THEN '引数が1
   RET%[RLEN%]=1:RELN%=RLEN%+1 '1を返す
  ELSEIF -1==N THEN '加算命令
   RLEN%=RLEN%-1:N=RET%[RLEN%] '戻り値を一つpop
   INC RET%[RLEN%-1],N '戻り値を一つpopし、Nに加算し、push
  ELSE
   STACK%[SLAST%]=-1:SLAST%=SLAST%+1 '加算命令をpush
   STACK%[SLAST%]=N-1:SLAST%=SLAST%+1 'N-1で再帰
   STACK%[SLAST%]=N-2:SLAST%=SLAST%+1 'N-2で再帰
  ENDIF
 WEND
 M=RET%[0]
END

VAR I%
FOR I%=0 TO 8
 PRINT DUMB_FIB(I%),
NEXT I%

コメント

アバター
こういち 2026/5/12 8:02 ◆ou0jbJnEJ0Kb
DIM STACK%[1024],SLAST%
DEF M91 N OUT M
 STACK%[0]=N:SLAST%=1 '最初の要素はN
 WHILE SLAST%!=0
  'pop
  N=STACK%[SLAST%-1]
  IF N<=100 THEN 'Nが100以下
   'NとN+11をpush
   STACK%[SLAST%]=N+11
   SLAST%=SLAST%+1
  ELSE
   'return(pop)してN-10をpush
   SLAST%=SLAST%-1
   STACK%[SLAST%-1]=N-10
  ENDIF
 WEND
 M=N-10 'Nは必ず101以上であり、N-10を返す
END

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -