2014-11-16 4 views
0

Я новичок в программировании на python, и в некоторых случаях у меня все еще есть трудности. Теперь я борюсь с рекурсивными функциями. Моя задача заключается в сумму от 0 до 3 квадрата этого числа, используя рекурсивные функции Моего код до сих пор выглядит следующим образом:Суммирование с использованием рекурсивных fuctions

sum = 0 
n = 3 
i = 1 

def summe(i,sum): 
    sum = sum +(i*i) 
    if(i <= n): 
     i = i+1 
     print sum 
     return summe(i, sum) 
    else: 
     print sum 

Выход пуста, даже сумма в случае-п ISNT печататься вне. Я следил за примерами, которые я нашел в Интернете, но я не вижу, где я сделал что-то не так.

ответ

0

Ваш выход пуст, потому что вы на самом деле не вызываете функцию, вы просто определяете ее. Кроме того, старайтесь избегать использования имен переменных Python и ключевых слов в вашем случае sum, который уже является функцией. То, как я бы об этом будет следующий

def addSquares(n, stop): 
    if n == stop: 
     return n*n 
    else: 
     return n*n + addSquares(n+1, stop) # Here is the recursion 

Например

>>> addSquares(0, 3) 
14 
+0

Нет, им не нужны два аргумента, только один. – georg

+0

@georg Имея 2 аргумента, они могут иметь произвольные начальные и конечные позиции, без необходимости жестко кодировать эти значения где-нибудь. – CoryKramer

+0

Это не тот случай. Правильный ответ на их конкретную проблему: 'return n * n + S (n-1), если n else 0' – georg

0

Вы никогда не вызывали функцию summe.

0

Переменные внутри функции имеет локальную область видимости, необходимо парафировать, что в функции:

def summe(i=1,sum=0): 

также лучше, чтобы передать п функционировать и использовать цикл внутри функции!

>>> def cal_sq(n): 
... return sum(cal_sq(i)+(i*i) for i in range(1,n+1)) 
0

Это даст вам, как рекурсивный следует назвать, как показано ниже. Я не понял, что вы хотите вычислить, поэтому просто добавив n рекурсивно, вы можете изменить это на свой собственный расчет.

sum = 0 
n = 3 
i = 1 
global allsum 
allsum = 0 

def sum(n): 
    print n 
    global allsum 
    allsum= allsum + n 

    if n > 0: 
     sum(n-1) 
sum(3) 
print allsum 
Смежные вопросы