15-07-12 函数、递归

一、函数:
函数是一个相对独立的代码块。善于利用函数,以减少重复编写程序段的工作量。

函数的四要素:函数名,形参(输入),返回类型(输出),函数体(加工运算)

函数的一般在class类中创建。可以简单的理解为在Main函数里输出结果,在函数里输入计算过程,可以反复调用,以减轻写代码的工作量。

(一)定义:
[static] 返回类型 函数名([变量类型 变量名[,变量类型 变量名[...变量类型 变量名]]])
{
函数体
}

(二)调用:
[数据类型 变量名 = ]函数名([实参1[,实参2...]])

说明:
1.函数名与变量名规则一样。

2.实参与形参一定要一一对应。

3.return所返回值一定要与"返回类型"一致。

4.函数定义没有一定的原则,只要好用就可以。

5.参数是地址的,在变量前面加ref;

(三).函数前面加注释:

为了在以后用到此函数的时候不会忘记此函数的功能,需要加一些注释,这样在使用的时候就可以将鼠标放在上面看到写好的注释以进行一定的提醒。

注释的使用方法是:在函数的上方输入///,也就是三个斜杠,然后再输入的地方输入注释。

(四).函数一个是传值,另一个是传址:

(1)传值就是将实参的值传入所调用的函数里面,实参的值并没有发生变化,默认的传值有int型,浮点型,bool型,char字符型,结构体型等等;

(2)传址就是将地址传到所调用的函数里面进行操作,实参的值也会跟着变化,传址的有数组和字符串string;

(3)上面所说的就牵扯到数据的分类,分为值类型和引用类型,值类型就是传值的那种,引用类型包括字符串类型、数组和对象,上面说的字符串类型特殊,主要是

因为字符串实际上是一个字符char[]数组,它在修改的时候并不是直接修改,而是心开辟了一个存储空间也就是建立了一个新的字符串,所以它在调用、赋值的时候相

当于传值,但它是引用类型的。

数字大小排序:

        static int[] PaiXu(params int [] n)
        {
            for (int i = 0; i < n.Length - 1; i++)//冒泡排序
            {
                for (int j = 0; j < n.Length - 1 - i; j++)
                {
                    if (n[j] <= n[j + 1])
                    {
                        int zj = n[j];
                        n[j] = n[j + 1];
                        n[j + 1] = zj;
                    }
                }
            }

            return n;
        }
        static int BiJiao(int a, int b) //形式参数
        {
            if (a >= b)
            {
                return a;
            }
            else
            {
                return b;
            }
        }

二、函数递归:

一、概念

函数体内调用本函数自身,直到符合某一条件不可继续调用。

二、应满足的条件

(1).有反复执行的过程(调用自身)。

(2).有跳出反复执行过程的条件(函数出口)。

三、注意事项

1.递归中必须要存在一个循环结束的条件。

2.递归函数的每次调用都需要栈来存储,如果次数太多的话容易造成栈溢出。

     //递归,函数自己调用自己
     //猴子吃桃,公园里有一堆桃子,每天猴子吃掉一半,并且扔掉一个坏的,到了第七天,猴子发现只剩下一个桃子了,问第一天公园里有多少桃子?

static void Main(string[] args)
          {

              int n = TaoZi(1);

            Console.WriteLine(n);
        }

        static int TaoZi(int day)
        {
            if (day == 7)
            {
                return 1;
            }
            int n = (TaoZi(day + 1) + 1) * 2;
            return n;
        }
时间: 2024-09-29 11:30:48

15-07-12 函数、递归的相关文章

一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值

'''一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值''' l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]] def get(seq): for item in seq: if type(item) is list: get(item) else: print(item) get(l) 原文地址:https://www.cnblogs.com/

函数递归与二分法(python3入门)

1 import sys 2 3 print(sys.getrecursionlimit()) # 查询递归保护限制次数 4 5 # 函数递归:在调用函数的过程中又 直接或者间接的调用该函数本身,称之为函数的递归调用 6 7 # 函数递归必须满足: 8 # 1 必须有一个明确的结束条件 9 # 2 每进入下一层递归,问题的规模都应该有所减少 10 11 # 由上述两个条件可以推导出递归应该有两个明确的阶段: 12 # 1 回溯:一层一层的递归调用下去 13 # 2 递推:在某一层结束掉递归,开始

十一、函数递归,算法二分法,三元表达式,列表字典生成式,匿名函数,内置函数

一.函数递归: 函数的递归:函数在调用阶段直接或间接的又调用自身 递归分为两个阶段 1.回溯:就是一次次重复的过程,这个重复的过程必须建立在每一次重复问题的复杂度都应该下降 直到有一个最终的结束条件 2.递推:一次次往回推导的过程 3.递归函数在运行过程中一定要有出口,否则会无限循环下去 # 1.求4以内的和: def sum_numbers(num): if num == 1: return 1 return num + sum_numbers(num - 1) # 递归特点:函数内部自己调用

函数——递归

递归就是函数直接或者是间接的调用自己,相当于循环,使用时必需要有一个跳出条件,否则会进入死循环.它是栈的存取方式,先进后出,后进先出. 主要用于循环,如阶乘函数.幂函数和斐波那契数列. <script> function fn(n) { if (n == 1) { return n; } return fn(n - 1) + n; } console.log(fn(5)); //15 </script> 以下为分析过程: <script> //分析: n = 5 fun

函数递归

函数递归就是一个函数引用另一个函数.def func (n): n+=1 if n>=8: return "and" return func(n)n=func(1)print(n)def a(): print(123)def b (): r=a() return rdef c (): r=b() return rc()

iOS函数,函数递归

#import <Foundation/Foundation.h> #import "Function.h" int main(int argc, const char * argv[]) { //函数定义 /*返回值类型 函数名(参数1, 参数2, 参数3, 参数4) { 函数体; return 返回值; } */ //函数四种基本类型: //无参无返回值 //实参 到形参的过程是一个拷贝的过程 //函数的值,要哟过对应的数据类型进行接收 //c语言允许函数嵌套调用,不允

兔子生兔子函数递归

namespace 兔子生兔子函数递归{    class Program    {        static void Main(string[] args)        {            Console.WriteLine("请输入你想知道兔子哪个月的数量:");            int m = Convert.ToInt32(Console.ReadLine());            int sum = new Program().tuzi(m);  //定

http://www.cnbc.com/2016/07/12/tensions-in-south-china-sea-to-persist-even-after-court-ruling.html

http://www.cnbc.com/2016/07/12/tensions-in-south-china-sea-to-persist-even-after-court-ruling.html The judgment is not important. Arbitration that is only agreed on by one party is nothing more than toilet paper. This is my land; why should I let som

函数递归时,递归次数到900多时,就是抛出异常exception RuntimeError(&#39;maximum recursion depth exceeded&#39;,)

import subprocess import multiprocessing import urllib import sys import os import pymongo import signal import time client=pymongo.MongoClient("192.168.139.143",27017) db=client.domaindb collection=db.domain def getdomain(i): print("proces

函数递归与栈的关系

首先通过反汇编语言,我们来了解一下最简单的递归函数与栈之间的关系. 如何获得反汇编语言,在visual studio 2008中,在debug环境下,在debug/windows/disassembly中可以查看反汇编之后的语言.现在我们看一下阶乘n!的实现 其C语言实现代码如下 [cpp] view plaincopy #include <stdio.h> int factorial(int n); int main(void) { int fact; fact = factorial(4)