yield 递归

简单例子:

public static System.Collections.Generic .IEnumerable<int> Power(int number, int exponent)
        {
            int result = 1;
            for (int i = 0; i < exponent; i++)
            {
                result = result * number;
                yield return result;
            }
        }
 var abc = Power(2, 8);

            foreach (int i in Power(2, 8))
            {
                Console.Write("{0} ", i);
            }

abc,输出结果是

2 4 8 16 32 64 128 256

http://msdn.microsoft.com/zh-cn/library/9k7k7cf0.aspx

http://www.cnblogs.com/ldp615/archive/2011/10/07/can-you-find-the-error-in-foreach-extension-method.html

时间: 2024-08-01 19:46:44

yield 递归的相关文章

利用生成器yield 递归解决八王后问题

八王后问题: 要在一个8*8的国际象棋棋盘里,放下8个王后,请问如何放置. 由于在国际象棋中,王后的杀戮区域是直线,和斜线,不论距离:如下图 所以要放置下8个王后,就必须把她们放在各自的杀戮区域之外.显然,每一行只能有且必须有一个王后. 构思代码: 1.棋盘 我们可以考虑,把棋盘用一个元组, state = (pos1,pos2,pos3....pos8) state中,元素的序号代表了棋盘的行 ; 元素的值(posn),则代表了王后在该行的位置. state 的初始状态是(none,none,

KOA中间件实现原理

1 //基本原理 2 var empty=(function *(){})(); 3 //中间件3 4 var mid2=function *(){ 5 console.log("2:before yield"); 6 yield empty; 7 console.log("2:after yield"); 8 } 9 //中间件2 10 var mid1=function *(){ 11 console.log("1:before yield"

Python 中的那些坑总结——持续更新

1.三元表达式之坑 很显然,Python把第一行的(10 + 4)看成了三元表达式的前部分,这个坑是看了<Python cookbook>(P5)中学到的,书中的代码: 2.Python生成器(yield)+递归 前两天一直纠结python的生成器递归该怎么写,今天看了os.walk()的代码恍然大悟,编程真是博大精深啊!不多说,上代码: from os import path def walk(top, topdown=True, onerror=None, followlinks=Fals

函数 阶段总结

目录 函数的定义 函数的三种定义方式 空函数 有参函数 无参函数 函数的调用 函数的返回值 函数的参数 形参 位置形参 默认形参 实参 位置实参 关键字实参 可变长参数 * ** 函数对象 引用 容器类元素 函数的返回值 函数的参数 函数嵌套 名称空间与作用域 内置名称空间 全局名称空间 局部名称空间 执行顺序 搜索顺序 全局作用域 局部作用域 global nonlocal 可变数据类型会打破作用域关系 闭包函数 装饰器 二层装饰器 两层装饰器模板 三层装饰器 迭代器 可迭代对象 迭代器对象

递归,yield,参数槽

#1.  records = [('f',1,2,4),('k',3,4,5),('z','e','d')] for key,value,*val in records: #可迭代对象,解构     if key == 'f':         f(val)         print('val:{0},{1}'.format(*val))     print('key:{0},value:{1}'.format(key,value)) #2.参数槽 #以*分隔,{非命名参数,命名参数}  #不

python_递归_协程函数(yield关键字)_匿名函数_模块

协程函数(yield) 协程函数:生成器:yield关键字的另一种用法 例:装饰器自动初始化函数(生成器函数)deco 1 yield的语句形式: yield 1 2 #yield的表达式形式: x=yield 3 4 5 6 #协程函数 7 8 def deco(func): 9 def wrapper(*args,**kwargs): 10 res=func(*args,**kwargs) 11 next(res) 12 return res 13 return wrapper 14 15

叠加多个装饰器、yield表达式、三元表达式、生成式、函数的递归

叠加多个装饰器 # 一.叠加多个装饰器的加载.运行分析(了解***) # def deco1(func1): # func1 = wrapper2的内存地址# def wrapper1(*args,**kwargs):# print('正在运行===>deco1.wrapper1')# res1=func1(*args,**kwargs)# return res1# return wrapper1 # def deco2(func2): # func2 = wrapper3的内存地址# def

day05匿名函数,内置函数,二分法,递归,模块

yield作为表达式来使用的方式 #grep -rl 'python /root """ 查找root下文件中含有python的文件 """ import os def init(func): def wrapper(*args,**kwargs): g=func(*args,**kwargs) next(g) return g return wrapper @init def search(target): while True: search

python-学习笔记之-Day5 双层装饰器 字符串格式化 python模块 递归 生成器 迭代器 序列化

1.双层装饰器 #!/usr/bin/env python # -*- coding: utf-8 -*- # author:zml LOGIN_INFO = False IS_ADMIN = False   def check_log(func): def inner(): res = func() if LOGIN_INFO: print('验证成功!') return res else: print('验证失败!') return inner   def check_admin(func)