首页 > 编程语言 >编程之路,从0开始:函数与递归

编程之路,从0开始:函数与递归

时间:2024-11-06 20:50:08浏览次数:3  
标签:调用 return 函数 递归 int 编程 形参 test

        Hello大家好!很高兴我们又见面了!

        给生活添点passion,开始今天的编程之路!

目录

1、函数定义及调用

2、函数声明

3、函数的嵌套调用和链式访问

4、递归


1、函数定义及调用

        什么是函数呢?

        函数就是一个固定的一个程序段,或称其为一个子程序。函数有三部分组成,除了可以实现固定运算功能,还有一个入口和一个出口。

        怎么调用函数呢?

        如下代码我们就定义了一个计算加法的函数并调用他。

#include<stdio.h>
int test(int x, int y)
{
	return x + y;
}
int main()
{
	int x = 5;
	int y = 3;
	int z = 0;
	z = test(x, y);
	printf("%d", z);
	return 0;
}

        函数可以没有返回值。如果函数不需要返回值,则“返回值类型”可以写“void”

        在定义函数时,通常有以下几部分构成:

        返回类型,函数名,参数列表,函数体。

        上图我们就定义了一个返回类型为整型,函数名为test,包含两个整型参数x,y的函数。大括号里包含的为函数体。

        在函数调用时,我们通过函数名(参数)的形式来调用。我们把调用函数时的参数叫实参,定义函数时的参数叫形参。需要注意以下几点:

1,函数实参和形参的数量必须相同。

2,形参在进入函数时创建,出函数时销毁

3,实参和形参对应类型必须相同。

        其实,形参就像是一个实参的崇拜者,当调用函数时,形参就为实参而创建,但形参改变不了实参的本质(这一点我们会在指针章节具体来讲)

2、函数声明

        细心的同学已经发现了,在上面的代码中我们把函数test的定义放在了main主函数的上面,这是因为如果函数定义在主函数下面的话,需要进行函数声明才能够使用。

        一般的我们这样声明函数:

int test(int x,int y);
//其实就是去掉了大括号和函数体,加上了;

        特殊的,我们可以自行创建一个.h头文件,然后用include包含我们创建的头文件,把函数的声明放到头文件中。

3、函数的嵌套调用和链式访问

        函数是支持嵌套调用和链式访问。

        嵌套调用是指在一个函数的定义中调用另一个函数。如下:

​
#include<stdio.h>

int test1(int x)
{
	return x + 1;
}
int test(int x, int y)
{
	int z = test1(x);
	return y + z;
}
int main()
{
	int x = 5;
	int y = 3;
	int d = 0;
	d = test(x, y);
	printf("%d", d);

	return 0;
}

        链式访问就是把一个函数的返回值传给另一个函数使用。如下;

​
#include <stdio.h>
#include <string.h>
 
int main()
{
    char arr[20] = "hello";
    int ret = strlen(strcat(arr,"bit"));//求字符串长度
    printf("%d\n", ret);
    return 0;
}
 
 
​

4、递归

        首先什么是递归呢?简单来说就是“我用我自己”,我这样说可能有些抽象,所以我们来看下面这串代码,边看边分析:

#include<stdio.h>
int test(int x)
{
	if (x == 5)
	{
		return 1;
	}
	
	return x + test(x+1);
}
int main()
{
	int x = 0;
	int z = 0;
	z = test(x);
	printf("%d", z);
	return 0;
}

        我们看到在test的函数体中又调用了test,只是传的值发生了变化,这不就是我用我自己吗?

递归的逻辑不太适合用语言描述,我画一张图大家就应该明白了:

83558f3da52f4cccb1be2848c94c3a3c.jpg

(画的很丑大家见谅)

        递归的过程是先按圈1到达4+test(5),然后在一步步算回去,直到算到第一次引用test,然后返回值。递归的内容不太好掌握,希望大家多多练习,多多思考。

        今天的内容就分享到这,谢谢大家!

标签:调用,return,函数,递归,int,编程,形参,test
From: https://blog.csdn.net/2401_87995839/article/details/143561100

相关文章

  • 实验3 类和对象 基础编程
    实验一task1.cpp#include"window.hpp"#include<iostream>usingstd::cout;usingstd::cin;voidtest(){Windoww1("newwindow");w1.add_button("maximize");w1.display();w1.close();}intmain(){......
  • 「C/C++」C++标准库 之 #include<functional> 函数模板库
    ✨博客主页何曾参静谧的博客......
  • Scala的高阶函数
    在函数式编程中,高阶函数(Higher-OrderFunction)是核心概念之一,它们可以接受其他函数作为参数,或者返回函数作为结果358。这使得函数可以像普通值一样被传递和操作,从而实现更灵活和抽象的编程方式56。 在Scala中实现高阶函数1.作为参数的函数:在Scala中,函数可以作为参数传递给......
  • 0基础学Python——类的单例模式、反射函数、记录类的创建个数、迭代器、生成器及生成
    0基础学Python——类的单例模式、反射函数、记录类的创建个数、迭代器、生成器及生成器练习类的单例模式定义代码演示反射函数代码演示记录类的创建个数迭代器定义特点生成器定义特点写法生成器练习生成器生成1-无穷的数字生成器生成无穷个素数类的单例模式定义......
  • 0基础学Python——面向对象-可迭代、面向对象-迭代器、call方法、call方法实现装饰器
    0基础学Python——面向对象-可迭代、面向对象-迭代器、call方法、call方法实现装饰器、计算函数运行时间面向对象--可迭代实现方法面向对象--迭代器实现方法call方法作用call方法实现装饰器代码演示计算函数运行时间代码演示面向对象–可迭代把对象看做容器,存储......
  • c语言入门4——函数
    4-1判断数字字符编写函数,判断指定的字符是否是数字字符,如果是函数返回1,否则函数返回0.要求在主调函数中输入该字符,调用函数并输出判断结果。输入格式:在一行中给出1个字符。输出格式:对于给定输入的字符,输出判断结果yes或no。输入样例:6输出样例:yes输入样例:H输......
  • 实验3 类和对象_基础编程2
    实验任务1:button.hpp源码:1#pragmaonce23#include<iostream>4#include<string>56usingstd::string;7usingstd::cout;89//按钮类10classButton{11public:12Button(conststring&text);13stringget_label()con......
  • C++:多态中的虚/纯虚函数,抽象类以及虚函数表
    我们在平时,旅游或者是坐高铁或火车的时候。对学生票,军人票,普通票这些概念多少都有些许耳闻。而我们上篇文章也介绍过了继承与多继承。如果这些票我们都分别的去写一个类,当然很冗余,这里我们便可以去使用继承,我们假设我们的票价是由一个票价函数控制的,如果子类与父类中有着同名的......
  • 大学新生编程入门的奇幻之旅
    《大学新生编程入门的奇幻之旅》一、引言在这个充满科技与创新的时代,编程如同一把神奇的钥匙,能够打开无数扇通往精彩未来的大门。对于当代大学生来说,掌握编程技能已经不再是一种选择,而是成为了必备的素养。然而,当新生们踏入这个广阔的编程世界时,往往会被众多的编程语言和......
  • C语言之输出函数printf以及puts
    printf和puts都是c语言的库函数,都可以输出的函数但他们也存在着一定的区别printf函数:1.功能强大:printf是一个格式化输出的函数,它可以输出各种类型的数据,并且能够按照指定的格式进行输出,例如会以10进制整数输出10。可以同时输入多组数据,灵活的控制输出的格式,如控制整数的......