2015-02-09 2 views
-2

Поскольку я довольно новичок в программировании на питоне и программировании, у меня есть вопрос очень простой природы. Я хочу сделать функцию итерации и рекурсивную функцию, которая делает это:Count to zero then Count up

bounce(4) 

4 3 2 1 0 1 2 3 4 

Я знаю, что это Propably очень простой, но любая помощь будет оценена.

Мой текущий код выглядит следующим образом:

def bounce1(n): 
    if n==0: 
     print "0", 
    else: 
     print n, 
     bounce1(n-1) 

def bounce2(n): 
    if n>=1: 
     bounce2(n-1) 
     print n 

def bounce(n): 
    bounce1(n) 
    bounce2(n) 
+2

рекурсии? Вы в этом уверены? –

+1

Функция 'range', вероятно, будет вам полезна. Вы знали? Вы можете дать отрицательные числа третьему параметру 'range'. – Kevin

+3

Что вы пробовали? StackOverflow не предназначен для создания программ для вас, а для помощи в решении конкретных вопросов программирования. Пожалуйста, напишите, какой код вы пробовали, и если вы ничего не пробовали, сначала попытайтесь решить проблему. –

ответ

1

Итерационный реализация:

>>> def bounce(num): 
...  limit, delta = num + 1, -1 
...  while(num != limit): 
...   print num 
...   num += delta 
...   if num == 0: 
...    delta = 1 

рекурсивная реализация:

>>> def bounce(num): 
...  print num 
...  if num: 
...   bounce(num - 1) 
...   print num 
...   
... 

выход в обоих случаях:

>>> bounce(4) 
4 
3 
2 
1 
0 
1 
2 
3 
4 
+0

Спасибо за ответ, это было очень полезно – Raindeerstream

+0

@Raindeerstream, если это помогло, не забудьте [принять это] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer- работа) :) Также, я добавил ваш код к вашему сообщению, теперь вы можете удалить свой ответ. –

+0

@mu 無 На самом деле я добавил его на свой пост, и вы отредактировали мое редактирование, чтобы добавить вкладки, которые испортили OP. – mbomb007

1

Если вы можете использоватьrange, я бы сделал это, как это в Python 2.7:

f = lambda x : map(abs, range(-x,x+1)) 
for x in f(4): 
    print x, 
+0

Поскольку это домашнее задание для вас, я бы не рекомендовал делать это таким образом. – mbomb007

+0

приятно! +1 для карты и абс –

+0

@mu 無 Спасибо, я даже не знал о «карте» до недавнего времени. Это очень удобно. – mbomb007