最大递归深度误差?

时间:2016-07-28 08:30:50

标签: python-2.7 recursion

所以我真的很新(3天),而且我在代码学院,我已经为其中一个活动编写了这段代码但是当我运行它时显示最大递归深度错误,我正在运行它在代码学院的python控制台中,同时在我自己的ipython控制台上。页面上的提示没有帮助,有人可以解释如何解决这个问题吗? 谢谢

def hotel_cost(nights):
    return (nights * 140)

def plane_ride_cost(city):
    if plane_ride_cost("Charlotte"):
        return (183)
    if plane_ride_cost("Tampa"):
        return (220)
    if plane_ride_cost("Pittsburgh"):
        return (222)
    if plane_ride_cost("Loas Angeles"):
        return (475)

def rental_car_cost(days):
    cost = days * 40
    if days >= 7:
        cost -= 50
    elif days >= 3:
        cost -= 20
    return cost    

def trip_cost(city, days):
    return hotel_cost(nights) + plane_ride_cost(city) + rental_car_cost(days)

1 个答案:

答案 0 :(得分:1)

<强>也许

def plane_ride_cost(city):
    if city == "Charlotte":
        return (183)
    if city == "Tampa":
        return (220)
    if city == "Pittsburgh":
        return (222)
    if city == "Los Angeles":
        return (475)

错误是:

plane_ride_cost(city)在每个递归步骤中调用plane_ride_cost("Charlotte")

不是最好的,但更好的方法:

def hotel_cost(nights):
    return nights * 140

plane_cost = {
    'Charlotte' : 183,
    'Tampa' : 220,
    'Pittsburgh' : 222,
    'Los Angeles' : 475,
}

def plane_ride_cost(city):
    if city not in plane_cost:
        raise Exception('City "%s" not registered.' % city)
    else:
        return plane_cost[city]

def rental_car_cost(days):
    cost = days * 40
    if days >= 7:
        cost -= 50
    elif days >= 3:
        cost -= 20
    return cost    

def trip_cost(city, days):
    return hotel_cost(nights) + plane_ride_cost(city) + rental_car_cost(days)