递归和for循环

# -*- coding: utf-8 -*-
#python 27
#xiaodeng
#http://www.cnblogs.com/BeginMan/p/3223356.html
#递归2

‘非递归方式‘
sum=0
#没有sum=0,会出现如下错误提示
‘‘‘
Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\new.py", line 12, in <module>
    sum+=obj
TypeError: unsupported operand type(s) for +=: ‘builtin_function_or_method‘ and ‘int‘
‘‘‘
for obj in range(5):
    sum+=obj

print sum        #10

#递归方式
def foo(n):
    if n>0:
        return n+foo(n-1)
    if n<=0:
        return 0

print foo(4)
时间: 2024-08-03 07:01:09

递归和for循环的相关文章

用两种递归思路与循环实现单链表的反转

typedef struct ListNode{ int data; struct ListNode *next; }ListNode; //递归一 ListNode *ReverseList (ListNode *pHead, ListNode *nHead = NULL) { //每次取下第一个节点头插法创建新链表 //nHead为反转后链表的头节点 if(pHead == NULL) return NULL; ListNode *pNext = pHead -> next; pHead -

[转]在计算机程序中,完成重复的任务有两种方式:递归和迭代(循环)。

在计算机程序中,完成重复的任务有两种方式:递归和迭代(循环) 递归的一个例子:从前有座山,山里有座庙,庙里一个老和尚在给小和尚讲故事,内容是“从前有座山,山里有座庙,庙里一个老和尚在给小和尚讲故事,内容是“从前有座山,山里有座庙,庙里一个老和尚在给小和尚讲故事,内容是“...... 循环的一个例子:炉子上有99锅汤,让我不小心喝了一锅,炉子上还有98锅汤;炉子上有98锅汤,让我不小心喝了一锅,炉子上还有97锅汤;炉子上有97锅汤,让我不小心喝了一锅,炉子上还有96锅汤; ...... http:

C递归实现字符串循环右移

设计一个函数轮转字符串.例如将“abcd”转为"dabc" 递归实现方式: 1 /*将字符串循环右移n个单位*/ 2 void move(char s[], int n) 3 { 4 if( n == 0) 5 return ; 6 else{ 7 int len = strlen(s); 8 int temp = s[len-1]; 9 int i; 10 for( i = len-1; i > 0 ; --i) 11 { 12 s[i] = s[i-1]; 13 } 14 s

组织树列表查询,不使用递归一次循环搞定

需求:不使用递归查询出一棵树. service层业务代码 1 @SuppressWarnings("unchecked") 2 public JsonRet getOrganizationList(HttpServletRequest request, HttpServletResponse response) { 3 LOG.d("getOrgnazationList"); 4 // 从Session得到用户信息 5 HttpSession session = r

递归及其等效循环

原文地址:https://www.cnblogs.com/wdmx/p/10031601.html

理清递归、迭代、循环的概念

loop.iterate.traversal和recursion这几个词是计算机技术书中经常会出现的几个词汇.众所周知,这几个词分别翻译为:循环.迭代.遍历和递归.乍一看,这几个词好像都与重复(repeat)有关,但有的又好像不完全是重复的意思.那么这几个词到底各是什么含义,有什么区别和联系呢?下面就试着解释一下. 循环(loop),指的是在满足条件的情况下,重复执行同一段代码.比如,while语句. 迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项.比如,for语句.大都会娱乐

大部分递归可以转化为循环

所谓的递归慢到底是什么原因呢? 前面一篇讲到了递归的效率问题,但是没具体深入到数据结构层面的解释,这里补充一下.纽约娱乐城 大家都知道递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等,这是通过一个递归工作栈实现的.具体是每次调用函数本身要保存的内容包括:局部变量.形参.调用函数地址.返回值.那么,如果递归调用N次,就要分配N*局部变量.N*形参.N*调用函数地址.N*返回值.这势必是影响效率的. 递归是利用系统的堆栈保存函数当中的局部变量来解决问题的.递归说白了就

程序算法艺术与实践:递归策略之递归,循环与迭代

众所周知,递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等,这是通过一个递归工作栈实现的,同时影响效率的.递归是利用系统的堆栈保存函数当中的局部变量来解决问题的,而递归就是在栈处理栈上一堆的指针指向内存中的对象,这些对象一直不被释放,直到递归执行到最后一次后,才释放空间. 循环效率与递归效率 递归与循环是两种不同的解决问题的典型思路.当然也并不是说循环效率就一定比递归高,递归和循环是两码事,递归带有栈操作,循环则不一定,两个概念不是一个层次,不同场景做不同的尝试.

关于递归和循环

一. 递归的慢究竟慢在哪 递归就是函数自己调用自己,函数每次调用的时候需要将以下内容存入递归栈:调用函数地址.形参.局部变量.返回值.所以如果递归调用了N次,那压栈操作要保存N * 调用函数地址.N * 局部变量.N * 形参.N * 返回值.这势必是影响效率的. 二. 递归和循环的比较: 递归和循环是两种不同的解决问题的思路,我们不能片面的说循环的效率一定会比递归高,下面我们做简单的分析: 1. 递归: 优点:代码简洁,清晰 缺点:它的运行需要较多次数的函数调用,如果调用层数比较深,需要增加额