5、C++函数


系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


目录

系列文章目录

前言

一、函数的概念

二、函数的定义和使用

1.定义

2.函数调用

3、递归调用

总结




前言

在面向过程的结构化程序设计中,函数是模块划分的基本单位,是对处理问题过程中的一种抽象。在面向对象的程序化设计中,函数是对对象功能的抽象。



一、函数的概念

一个C++程序可由一个主函数和若干子函数构成。mian是主函数,主函数是程序执行的开始点。主函数可以调用其他子函数,子函数也可以调用其他函数。


二、函数的定义和使用


1.定义

类型说明符 函数名(形参列表)
{
    函数语句
    return 返回值类型/无返回值
}

2.函数调用

函数在调用之前需要先声明,函数原型声明格式:

类型说明符 函数名(形参1,形参2...)

函数调用格式:函数名(实参1,实参2,...)

#include <iostream>
using namespace std;

// 判断是否是回文数
bool symm(unsigned n){
    unsigned temp = n;
    unsigned m = 0;
    while (temp>0)
    {
        m = m*10 +temp%10;
        temp /= 10;
    }
    return m == n;
    
}


int main(int argc, char const *argv[])
{
    for (unsigned m = 11; m < 10000; m++){
        if (symm(m) && symm(m*m) && symm(m*m*m))    
        {
            cout << "m="<< m;
            cout << " m*m="<< m*m;
            cout << " m*m*m="<< m*m*m <<endl;
        }
        
    }
    return 0;
}

3、递归调用

程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

/*****
 * 汉诺塔问题
 * 假设有三根针ABC,A针上有n个盘子,上面盘子最小,下面盘子最大,
 *  要求:将A针上的盘子移到C针上,且在移动过程中保证大的在下面,小的在上面。
 *  解决办法:将A针上的n-1盘子移到B针上
 *           把A针上剩下的一个盘子移动C针上
 *           将B针上n-1个盘子移到C针上
*/
#include <iostream>
using namespace std;

// 把src针上的最上面的一个盘子移动到dest针上
void move(char, char);
void hanoi(int, char, char, char);

int main(int argc, char const *argv[])
{
    int m;
    int steps = 0;
    cout << "enter the number of diskes: "<< endl;
    cin >> m;
    cout << "the steps to moving " << m << " diskes:" << endl;
    hanoi(m, 'A', 'B', 'C');
    return 0;
}

void move(char src, char dest){
    // 将一个盘子从一个针上移动到另外一个针上
    cout << src <<"-->" << dest <<endl;
}

void hanoi(int n, char src, char medium, char dest){
    // 将多个盘子从一个针上移动到另外一个针上,是一个递归问题
    if(n == 1) move(src, dest);
    else {
        hanoi(n - 1, src, dest, medium); // 把src上的n-1个盘子移动到medium
        move(src, dest);                 // 把src剩下的一个盘子移动到dest
        hanoi(n - 1, medium, src, dest); // 把medium上的n-1个盘子移动到dest
    }
}


总结

介绍了函数的定义、声明、参数和调用等相关概念。其中要注意函数的形参是属于函数内部的变量,只有当函数被调用是内存才会开辟空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值