zoukankan      html  css  js  c++  java
  • iOS 阶段学习第七天笔记(函数、递归)

     iOS学习(C语言)知识点整理笔记

    一、函数

     1)概念:具有特定功能的代码块的封装

     2)函数的定义: 函数类型+函数名(形参列表)

         函数类型 函数名(形参类型1  形参名1,形参类型2   形参名2.....){

                函数体;//函数的实现

         }

     3)函数名要符合标示符的定义

     4)函数的返回类型可为空,为空用void;也可以是其他数据类型。

     5)void函数的调用:函数名(); void类型不能用任何类型去接收。

     6)int 类型函数的调用:定义int类型的数据去接收函数的返回值,例如: int sum=add(x,y); 有时候也可以忽略      返回值

     7)return 函数的返回 ,void函数的return语句可以省略也可以return 空,return语句可以有多条,以执行到的第一句为准。

     8)非void的其他类型,return 表达式类型要和定义的类型匹配

     9)返回类型与接收类型不匹配时不一定会报错,但会造成精度的损失,例如:int类型的函数用char类型接收

    10)函数的好处:将不同的功能实现封装起来,容易阅读和维护;便于分工,调用的人可以不关心具体的实现。

    11)函数使用的注意点:

        1、函数名要言之有物,名字和功能一致。

        2、接口要精简(形参,返回值)

        3、实现的功能要单一,不要混杂。

        4、对外的函数接口要由详细的注释

    12)局部变量:从变量定义的位置开始到定义所在的方法体的“}”结束

    13)函数运行的过程:

          1、给形参开辟空间

          2、实际参数给形式参数传值

          3、形式参数参与运算

          4、return 的时候形参销毁

    14)全局变量:定义在方法体外面的变量,优点所有函数都能访问,缺点所有函数都能修改不安全。

    15).c文件写方法的实现;.h文件放函数的声明。

    16)函数的声明: 函数返回类型   函数名(形参类型1  形参名1,形参类型2  形参名2....)。

    17)函数在main后面定义,但是必须要在main之前声明。

    18)头文件存放内容:

        1、函数的声明

        2、类型定义 #typedef

        3、宏定义 #define  

    19)函数都是平级的可以相互调用,也可以自己调用自己。

    二、递归

    1)概念:函数自己调用自己的一个过程

    2)递归的优点是使代码结构层次更清晰使程序更简洁,缺点是占用资源太多,可能造成堆栈溢出。

    3)使用递归算法 计算斐波拉契数列

    实现代码:

     1 int fblq(int n){
     2    if(n==1||n==2)
     3       return 1;
     4    else 
     5      return fblq(n-1)+fblq(n-2);
     6 }
     7 int main(){
     8   int len=20;
     9   for (int i=1; i<=len; i++) {
    10     printf("%d ",fblq(i));
    11   }
    12   return 0;
    13 }

     4)使用递归求两个数的最大公约数

    实现代码:

     1 int ComDiv(int x,int y){
     2     if(x%y==0)
     3        return y;
     4      else  
     5        return ComDiv(y,x%y);
     6 }
     7 
     8 int main(){
     9    printf(“%d”, ComDiv(28,35));
    10    return 0;
    11 }

     5)使用递归算法实现猴子吃桃问题的统计

    实现代码:

    1 int MonkeyEatPeach(int day){
    2     if(day==9)
    3       return 1;
    4 
    5     printf("day=%d
    ",day);
    6 
    7     return  2*MonkeyEatPeach(day+1)+2;
    8 }
  • 相关阅读:
    eclipse下c/cpp " undefined reference to " or "launch failed binary not found"问题
    blockdev 设置文件预读大小
    宝宝语录
    CentOS修改主机名(hostname)
    subprocess报No such file or directory
    用ldap方式访问AD域的的错误解释
    英特尔的VTd技术是什么?
    This virtual machine requires the VMware keyboard support driver which is not installed
    Linux内核的文件预读详细详解
    UNP总结 Chapter 26~29 线程、IP选项、原始套接字、数据链路访问
  • 原文地址:https://www.cnblogs.com/ChinaKingKong/p/4599120.html
Copyright © 2011-2022 走看看