基本的な質問になります。

GitHubから以下のコードを見つけました。
https://gist.github.com/ria3100/fc7ebf6c5d37357919f2

どうもN-1回同じ処理を反復しているようです。
なぜこのコードで反復処理がなされているのかが分かりません。

また、

temp[len(temp[:])//2] = 1

がどのような構文かも理解できていません。

文法的なことですが調べきれずにおります。
お手数ですがお教えいただけないでしょうか。

input1 = txt_input[0].split()
def reversal(temp):
    temp[len(temp[:])//2] = 1
    return temp

def calc(N, temp = [0]):
    print("calc")
    if N == 1:
        return temp
    else:
        ret = temp[:]
        ret.append(0)
        ret.extend(reversal(temp[:]))
        return calc(N-1, ret)

if __name__ == '__main__':
    N = int(input1[0])
    print(calc(N))