When it’s ready.

出来るまで出来ない

バカの壁 再帰の挙動が追えません!

プログラミングを楽しみたいと思ったら、多少の努力は必要だ。もう、再帰から逃げちゃだめだと思うようにした。とりあえづ

Pythonですらすらかけるようにがんばる。

階乗

# coding:utf-8

import sys

def Kaijo(num):
  if num == 0:
    return 1
  else:
    return Kaijo(num -1) * num

if __name__ == '__main__':
  if len(sys.argv) > 1:
    if sys.argv[1].isdigit():
      k = int(sys.argv[1])
      sys.setrecursionlimit(k + 2)
      print Kaijo(k)
    else:
      print 'number please'
  else:
      print 'number please'

まだなれない、言われたとおりのやり方をやってるだけな気がする。再帰の深さを変える事が出来ると知った。なにかに2階層分取られてる。

フィボナッチ

# coding:utf-8
import sys

cnt = 0
def fibo(n):
  global cnt
  if n < 1:
    cnt += 1
    return fibo(n-1) + n

if __name__ == '__main__':
  n = int(sys.argv[1])
  print fibo(n)
  print cnt

なんか、再帰の書き方を覚えると言うよりも、ルールを数式に起こすところに第一の壁があり、数式をコードに落とすのに第二の壁がある。第二の壁の方が第一の壁より二倍くらい高い気がする。