#!/usr/bin/python
# coding:utf-8
from __future__ import print_function, unicode_literals
import sys
N = 0.01
def main():
# input
print("Input a number for square root calculation.")
try:
input = sys.stdin.readline().strip("\n")
except KeyboardInterrupt:
sys.exit()
try:
input = float(input)
except ValueError:
sys.exit("input error")
# calculate and output
print("loop: "+str(sb_sqrt(input)))
print("recursive: "+str(sb_sqrt2(input)))
def sb_sqrt(target):
"""square root calculation by loop.
"""
r = N
while r * r < target:
r += N
# r -= N
return r
def sb_sqrt2(target):
"""square root calculation by recursive and clojure.
"""
def _(r):
# print("deb1:"+str(r))
if r * r < target:
# print("deb2:"+str(r))
return _(r+N)
# print("deb3:"+str(r))
else:
# print("deb4:"+str(r))
return r
return _(N)
if __name__ == "__main__":
main()
IyEvdXNyL2Jpbi9weXRob24KIyBjb2Rpbmc6dXRmLTgKZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscwppbXBvcnQgc3lzCgoKTiA9IDAuMDEKCgpkZWYgbWFpbigpOgogICAgIyBpbnB1dAogICAgcHJpbnQoIklucHV0IGEgbnVtYmVyIGZvciBzcXVhcmUgcm9vdCBjYWxjdWxhdGlvbi4iKQogICAgdHJ5OgogICAgICAgIGlucHV0ID0gc3lzLnN0ZGluLnJlYWRsaW5lKCkuc3RyaXAoIlxuIikKICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICBzeXMuZXhpdCgpCiAgICB0cnk6CiAgICAgICAgaW5wdXQgPSBmbG9hdChpbnB1dCkKICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgIHN5cy5leGl0KCJpbnB1dCBlcnJvciIpCgogICAgIyBjYWxjdWxhdGUgYW5kIG91dHB1dAogICAgcHJpbnQoImxvb3A6ICIrc3RyKHNiX3NxcnQoaW5wdXQpKSkKICAgIHByaW50KCJyZWN1cnNpdmU6ICIrc3RyKHNiX3NxcnQyKGlucHV0KSkpCgoKZGVmIHNiX3NxcnQodGFyZ2V0KToKICAgICIiInNxdWFyZSByb290IGNhbGN1bGF0aW9uIGJ5IGxvb3AuCiAgICAiIiIKICAgIHIgPSBOCiAgICB3aGlsZSByICogciA8IHRhcmdldDoKICAgICAgICByICs9IE4KICAgICMgciAtPSBOCgogICAgcmV0dXJuIHIKCgpkZWYgc2Jfc3FydDIodGFyZ2V0KToKICAgICIiInNxdWFyZSByb290IGNhbGN1bGF0aW9uIGJ5IHJlY3Vyc2l2ZSBhbmQgY2xvanVyZS4KICAgICIiIgogICAgZGVmIF8ocik6CiAgICAgICAgIyBwcmludCgiZGViMToiK3N0cihyKSkKICAgICAgICBpZiByICogciA8IHRhcmdldDoKICAgICAgICAgICAgIyBwcmludCgiZGViMjoiK3N0cihyKSkKICAgICAgICAgICAgcmV0dXJuIF8ocitOKQogICAgICAgICAgICAjIHByaW50KCJkZWIzOiIrc3RyKHIpKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgICMgcHJpbnQoImRlYjQ6IitzdHIocikpCiAgICAgICAgICAgIHJldHVybiByCgogICAgcmV0dXJuIF8oTikKCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgbWFpbigpCg==