• 函数二——递归


    函数2

    1.将函数作为表达式使用

    int func(int x,int y )

    {

    return x+y;

    }

    int main()

    {

    printf("%d",func(100,200));

    }

    2.将函数作为语句

    void func()

    {

    printf("hello world");

    }

    int main()

    {

    func();

    }

    3.将函数作为实参使用

    #include<stdlib.h>

    #include<time.h>

    int myrand()

    {

    srand((unsigned int)time(NULL));

    return rand()%5;

    }

    int main()

    {

    int arr[5]={10,20,30,40,50};

    printf("%d",arr[myrand()]);

    //myrand()就是作为实参使用的函数

    return 0;

    }

    调用函数也是分先后顺序的

    void func1(int data)

    {

    printf("%d",data);
    

    }

    void func2(int data)

    {

    fun1(data-1);
    
    printf("%d",data);
    

    }

    int main()

    {

    func2(10);
    
    return 0;
    

    }

    //输出的结果是

    9 10

    重点:函数的递归

    指的是——函数可以调用自己,这就叫函数的递归

    一定有一个终止条件

    1+2+3...+100用递归来算

    int func(int data)

    {

    if(data==1)
    
    {
    
    return 1;
    
    }
    
    else
    
    {
    
    return data+func(data-1);
    
    }
    

    }

    int main()

    {

    printf("%d",func(100));
    
    return 0;
    

    }

    计算n的阶乘

    int func2(int n)

    {

    if(n==0)
    

    {

    return 1;
    

    }

    else

    {

    return n*func1(n-1);
    

    }

    }

    递归算法

    1.递归的终止条件

    2.N 前面:n-1和终止条件的关联

    斐波拉契数列

    1,1,2,3,5,8,13,21,34,55....

    int f(int n)

    {

    if(n==1||n==2)
    

    {

    return 1;
    

    }

    else

    {

    return f(n-1)+f(n-2);
    

    }

    }

    int main()

    {

    printf("%d",f(56));
    

    }

    //输出第6项为8

    //汉诺塔游戏的外挂
    void hnt(int n, char a, char b, char c)
    {
    if (n == 1)
    {
    printf("%c==>>%c ", a, c);
    }
    else
    {
    hnt(n - 1, a, c, b);//a位置借助c位置移动到b位置
    printf("%c
    =>>%c ",a, c);
    hnt(n - 1, b, a, c);//b位置借助a位置移动到c位置
    }
    }
    int main()
    {
    hnt(5, 'a', 'b','c');
    while (1);
    return 0;
    }

  • 相关阅读:
    为什么重写equals还要重写hashcode?
    谈谈关于Synchronized和lock
    springBoot为啥没有没有web.xml了
    springBoot整合mybatis开发
    springBoot的介绍与搭建
    Java i++原理及i=i++的问题说明
    Django学习笔记〇三——APP以及的文件结构
    Django学习笔记〇二——第一个Django项目
    Django学习笔记〇一——从web的概念引入
    MySQL学习笔记——〇六SQLAlchemy框架
  • 原文地址:https://www.cnblogs.com/Kissfly123/p/13944031.html
Copyright © 2020-2023  润新知