2017-06-11 10 views
0

こんにちは私のスクリプトを実行すると、再帰エラーが表示されます。私のプログラムは1時間足らずで済むので、どうやって進めるのか分かりません。誰かが私に偉大ないくつかの洞察力を与えることができる場合!それは2つの部分のスクリプトです。私のベクトルプログラム(再帰)のエラー

私のコード

import math 
import random 
from random import randrange, uniform 

def add(u, v): 
    sum1 = [x + y for x, y in zip(u, v)] 
    return sum1 

def negate(u): 
    myng = [x - 2*y for x, y in zip(u, u)] 
    return myng 

def sub(u,v): 
    d = [x - y for x, y in zip(u, v)] 
    return d 

def scalarMult(c, u): 
    m = [(x+y-y)*c for x, y in zip(u,u)] 
    return m 

def zip(u,v): 
    mt = [x * y for x, y in zip(u, v)] 
    return mt 

def dot(u, v): 
    l = zp(u,v) 
    a = sum(l) 
    return a 

def length(u): 
    d = dot(u,u) 
    x = math.sqrt(d) 
    return x 

def unit(v): 
    l = length(v) 
    m = [(x+y-y)/l for x,y in zip(v,v)] 
    return m 

def randVector(n, a, b): 
    l = [] * n 
    i = 0 
    while(i<n): 
    l.append(random.uniform(a,b)) 
    i=i+1 

    return l 



    #------------------------------------------------------------------------------ 
# VectorTest.py 
#------------------------------------------------------------------------------ 

import Vector 

A = [-3, -4, 7] 
B = [6, -2, 2] 

print(A) 
print(B) 

print(Vector.add(A,B)) 
print(Vector.negate(B)) 
print(Vector.sub(A,B)) 
print(Vector.scalarMult(2.5,A)) 
print(Vector.scalarMult(-3.5,B)) 
print(Vector.zip(A,B)) 
print(Vector.dot(A,B)) 
print(Vector.length(A)) 
print(Vector.length(B)) 
print(Vector.unit(A)) 
print(Vector.unit(B)) 
print(Vector.angle(A,B)) 

C = Vector.randVector(3,-10,10) 
print(Vector.sub(C,C)) 

答えて

1

あなたzip関数が無限に無限再帰を生成し、自分自身を呼び出します。

def zip(u, v): 
    mt = [x * y for x, y in zip(u, v)] 
    return mt 

これを呼び出すときには、その値を取得するために自分自身を呼び出す必要があります。それがこのように呼ばれると、それは何度も繰り返され、決して完了しません。

+0

ありがとうございました!名前を変更しなければならなかった。どうもありがとうございます – YearofTheBoar