函数调用

递归算法之基础练习

拜拜、爱过 提交于 2020-02-11 23:54:40
递归的定义: 一个函数自己直接或间接调用自己。 我们只要把下面两个基本的问题搞明白就差不多理解了递归的含义。 ( 这里需要注意的是我们写递归的时候一定要有个递归出口、不然会导致栈溢出异常 ) /** * 递归的复习与巩固 * @author qiu * 定义:一个函数自己直接或间接调用自己。 */ public class Recursion { public static void main ( String [ ] args ) { //求阶乘 n!的问题可以看成n*(n-1)! int num = factorial ( 10 ) ; System . out . println ( num ) ; //求1+2+3....+n的和 int sum = factorial1 ( 5 ) ; System . out . println ( sum ) ; } public static int factorial ( int N ) { //递归函数 if ( N == 1 || N == 0 ) { //递归结束出口 return 1 ; } else if ( N < 0 ) { //递归结束出口 return - 1 ; } else { return N * factorial ( N - 1 ) ; } } private static int factorial1

day24_Stream流、方法引用

南楼画角 提交于 2020-02-11 22:28:07
Stream流 说到Stream便容易想到I/O Stream,而实际上,谁规定“流”就一定是“IO流”呢? 在Java 8中 ,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念, 用于解决已有集合类库既有的弊端。 由来 传统集合的多步遍历代码 几乎所有的集合(如 Collection 接口或 Map 接口等)都支持直接或间接的遍历操作。而当我们需要对集合中的元素进行操作的时候,除了必需的添加、删除、获取外,最典型的就是集合遍历。例如: package demo01; import java.util.ArrayList; import java.util.List; public class Demo01ForEach { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("张无忌"); list.add("周芷若"); list.add("赵敏"); list.add("张强"); list.add("张三丰"); for (String name : list) { System.out.println(name); } } } 这是一段非常简单的集合遍历操作:对集合中的每一个字符串都进行打印输出操作。 循环遍历的弊端 Java

函数

拟墨画扇 提交于 2020-02-11 20:40:54
1、定义函数:关键字def用来告诉python你要定义一个函数。函数后面所有的缩进构成了函数体。要调用函数,可依次指定函数名以及用括号括起的必要信息。 def greet_user():#函数定义,向Python指出函数名,还可能在括号内指出函数为完成其任务需要什么样的信息 #最后定义以冒号结尾 #显示简单的问候语 print("hello!") greet_user() 1.1 向函数传递信息 def great_user(username): print("Hello, "+username.title() + "!") great_user('jesse') 1.2 实参和形参 在上面的函数great_user()的定义中,变量username是一个形参——函数完成其工作所需的一项信息。在大马great_user('jesse')中,值'jesse'是一个实参。实参是调用函数时传递给函数的信息。我们调用函数时,要让函数使用的信息放在括号内。 2、传递实参 2.1 位置实参:调用函数时,Python必须将函数调用的每一个实参都关联到函数定义中的一个形参。为此最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参。(利用位置实参来调用函数时,如果实参的位置不正确,结果可能出乎意料) def describe_pet(animal_type,pet_name):

函数的执行

天大地大妈咪最大 提交于 2020-02-11 19:40:18
函数在声明的时候不会被执行,在被调用的时候才会执行,比如,一个JS函数的参数是回调函数,那么传递的回调函数只是函数的声明,并不会被执行,只有被调用时才会执行。如下JS代码自定义了一个数组过滤器: 来源: https://www.cnblogs.com/-muchen-/p/12295337.html

C++面向过程编程

試著忘記壹切 提交于 2020-02-11 18:47:55
前言 C语言是面向过程的编程语言,C++是面向对象的编程语言,这是两种不同的编程语言。C语言是C++的子集,C++是C语言的超集,C++进一步扩充和完善了C语言,其中大部分是对于面向对象编程的拓展。C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。 从“Hello world!”讲起 传承学习编程语言的优良传统,我们来写一段“Hello world!”: #include <iostream> using namespace std; int main() { cout << "Hello World"; return 0; } 类 类(class)是用户自定义的数据类型,是一种构造类型,与C语言结构体类似,但是进行了一些扩展,类的成员不但可以是变量,还可以是函数,通过类定义出来的变量也有特定的称呼,叫做“对象”。类一般分为两部分,分别写在不同的文件当中,其一是头文件,用来声明这种类所提供的功能,另一个文件包含了完成这些操作的代码。想要使用类,就必须现在程序中包含头文件。 标准“输入/输出库” 在 C++ 标准的“输入/输出库”名为“ iostream ”,iostream 这个单词是由3个部分组成的,即 i-o-stream ,意为输入输出流。在 iostream

加密与解密学习笔记3-Windows与Unicode

前提是你 提交于 2020-02-11 18:36:50
windows 9x几乎都是使用ANSI字符串来进行所有内部操作。但也有少量函数支持Unicode的能力。 Win9x_Unicode.exe例子 #include <windows.h> #include <tchar.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdline, int iCmdShow) { MessageBox(NULL, TEXT("Windows 9x支持Unicode?"), TEXT("Hello"), 0); return 0; } 运行结果: 反汇编工具(W32Dasm)查看代码 :00411690 6A00 push 00000000 :00411692 68306B4100 push 00416B30 :00411697 68406B4100 push 00416B40 :0041169C 6A00 push 00000000 * Reference To: USER32.MessageBoxW, Ord:024Dh | :0041169E FF1598A04100 Call dword ptr [0041A098] :004116A4 3BF4 cmp esi, esp :004116A6 E859FAFFFF call

C++学习笔记7

瘦欲@ 提交于 2020-02-11 15:56:10
目录 六、动态联编与虚函数 1、联编的概念 2、静态联编 3、动态联编 4、虚函数 5、虚析构函数 6、纯虚函数和抽象类 六、动态联编与虚函数 1、联编的概念 联编是指一个计算机程序自身彼此关联(使一个源程序经过编译、 连接, 成为一个可执行程序) 的过程, 在这个联编过程中, 需要确定程序中的操作调用(函数调用) 与执行该操作(函数) 的代码段之间的映射关系, 按照联编所进行的阶段不同, 可分为静态联编和动态联编。 2、静态联编 静态联编又称静态束定、 早期联编、 前期联编。 静态联编是指联编工作是在程序编译链接阶段进行的, 静态联编又称早期联编, 因为这种联编是在程序开始运行之前完成的。 在程序编译阶段进行的这种联编又称静态束定, 在编译时就解决了程序中的操作调用与执行该操作代码间的关系, 确定这种关系又被称为束定, 编译时束定又称为静态束定。 静态联编就是, 编译器在程序运行前就知道调用什么函数做什么事 。 静态联编特点: 速度快效率高 。 3、动态联编 动态联编又称动态关联、 动态束定、 后期联编、 晚期联编。 动态联编是指编译程序在编译阶段并不能确切地知道将要调用的函数, 只有在程序执行时才能确定将要调用的函数, 为此要确切地知道将要调用的函数,要求联编工作在程序运行时进行, 这种在程序运行时进行的联编工作被称为动态联编。 C++规定: 动态联编是在 虚函数

Python函数调用

微笑、不失礼 提交于 2020-02-11 14:37:51
Python函数调用: 函数定义后,使用函数名(实参)进行调用,如果具有返回值,则使用变量接收。 示例: 无参数,无返回值 # 程序:定义一个 say_hello 函数,使函数能够说出 hello def say_hello(): print("hello") say_hello() # hello 有参数,无返回值 # 定义一个函数,输出 欢迎,接收到的参数 name def huanying(name): print("欢迎",name) huanying("小明") # 欢迎 小明 无参数,有返回值 #定义一个求 1~10 的总和的函数,函数名为 one_to_ten,要求具有返回值 def one_to_ten(): sum = 0 for i in range(1,11): sum += i return sum sum_1 = one_to_ten() print(sum_1) # 55 有参数,有返回值 # 定义一个求长方形面积的函数,要求具有返回值且参数为 height 和 width def area(height,width): return height * width mianji = area(5,4) print(mianji) 2020-02-11 来源: https://www.cnblogs.com/hany-postq473111315/p

学习使用add()()()迭代调用,柯里化处理

房东的猫 提交于 2020-02-11 14:27:21
将多个参数的函数,转换成单参数函数链 以add()()()举例 function add(){ 使用数组保存参数 let _args = Array.prototype.slice.call(arguments); let _adder = function(){ _args.push(...arguments); return _adder; } _adder.toString = function(){ return _args.reduce(function(a,b){ return a + b; }) } return _adder; } 来源: https://www.cnblogs.com/wangc04/p/12294770.html

迭代器、生成器、可迭代对象

两盒软妹~` 提交于 2020-02-11 12:33:22
1、迭代器 可以作用于for循环的数据类型有如下几种: 1、一类是集合数据类型:list、tuple、dict、set、str等; 2、一类是generator,包括生成器和带yield的generator function; 这些可以直接作用于for循环的可迭代对象:Iterable。 可以使用isinstance()判断一个对象是否是Iterable对象: >>> from collections import Iterable >>> isinstance([], Iterable) True >>> isinstance({}, Iterable) True >>> isinstance('abc', Iterable) True >>> isinstance((x for x in range(10)), Iterable) True >>> isinstance(100, Iterable) False 而生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值, 直到最后抛出StopIteration错误表示无法继续返回下一个值了。 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。 可以使用isinstance()判断一个对象是否是Iterator对象: >>> from collections import