読者です 読者をやめる 読者になる 読者になる

個人的自由ノート

ふと自分が気になった事を書いてます

OCamlで問題を解く

再帰処理にこだわってやってましたけど、一部の問題ではどうやってもできないと思うので、邪道と呼ばれているforループを使いました。

print_string "正方形を表示します。\n";;
print_string "段数は : ";;
let n = read_int();;
let rec loop nb = if nb <> 0 then
                    begin
                      print_string "*";
                      loop (nb - 1)
                    end
                  else
                    print_newline ();;

let rec main na = if na <> 0 then
                    begin
                      loop n;
                      main (na - 1)
                    end
                  else
                    ();;
main n;;



print_string "段数は : ";;
let n = read_int();;

let rec loop nb = if nb <> -1 then
                    begin
                      print_string "*";
                      loop (nb - 1)
                    end
                  else
                    print_newline ();;

let rec main na = if na <> n then
                    begin
                      loop na;
                      main (na + 1)
                    end
                  else
                    ();;

main 0;;



print_string "段数は : ";;
let n = read_int();;

let rec loop nb = if nb <> 0 then
                    begin
                      print_string "*";
                      loop (nb - 1)
                    end
                  else
                    print_newline ();;

let rec main na = if na <> 0 then
                    begin
                      loop na;
                      main (na - 1)
                    end
                  else
                    ();;
main n;;



print_string "段数は : ";;
let n = read_int();;

for i = 1 to n do
  for j = 1 to n - i do
    print_string " ";
  done;
  for k = 1 to i do
    print_string "*";
  done;
  print_newline ()
done;;




print_string "段数は : ";;
let n = read_int();;

for i = 0 to n - 1 do
  for j = n - i to n - 1 do
    print_string " ";
  done;
  for k = 0 to n - i - 1 do
    print_string "*";
  done;
  print_newline ();
done;;