2015-02-09 73 views
-2

由于即时通讯相当新的python和编程我有一个非常基本的性质的问题。我想打一个迭代函数和递归函数,这是否:计数为零然后计数

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

递归?你确定吗? – 2015-02-09 19:13:29

+1

范围函数可能对您有用。你知道吗?你可以给负数赋予'range'的第三个参数。 – Kevin 2015-02-09 19:13:53

+3

你到目前为止尝试过什么? StackOverflow不适用于为您构建程序,而是帮助您解决特定的编程问题。请发布您尝试过的代码,如果您没有尝试过,请先尝试自己的问题。 – 2015-02-09 19:15:08

回答

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 2015-02-09 19:45:53

+0

@Raindeerstream如果这有助于不要忘记[接受它](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-工作):)另外,我已将您的代码添加到您的帖子中,您现在可以删除您的答案。 – 2015-02-09 19:46:40

+0

@mu无其实我将它添加到他的帖子中,并且您编辑我的编辑以添加OP已混乱的标签。 – mbomb007 2015-02-09 20:35:53

1

如果可以使用range,我会做这样在Python 2.7:

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

既然这是你的功课,我不会推荐这样做。 – mbomb007 2015-02-09 19:41:24

+0

不错! +1地图和abs – 2015-02-09 20:34:42

+0

@mu无谢谢,直到最近我还不知道'map'。这非常方便。 – mbomb007 2015-02-09 20:36:42