C++中的子函数与迭代(递归)问题

和C语言一样,C++中也存在子函数的情况,子函数位与main函数之外,但会在main函数中被调用,子函数的优点就在于其减少了主函数中的代码数,同时也便于代码的检测与修改。一个程序中可以存在多个子函数,子函数还能进行嵌套调用(即子函数A调用B,同时B也能调用A);迭代(递归)也即某一子函数调用自身。子函数代码须指定一个返回类型,若无则定义为void,同时有返回时,子函数内部必须有return,若无则会出现警告,相反地,若定义为void,则一定不能有return,否则会报错。下面以具体例子说明:

#include <iostream>
using namespace std;
int f(){          //这里f函数返回值为int型,"{}"之间为函数体f(括号中为调用时传递下来地参数,若无,则无需传递)
    return 1;
}
char g(){         //这里g函数地返回值为char类型
    return 'a';
}
int main(){
    int a;
    a = f();     //此处调用子函数f,这时f()处返回值为1,并赋给了a
    cout << a;   //这里输出a为1
    char b;
    b = g();     //这里变量b的内容为字符'a'
    cout << b;
    return 0;
}

带参数的子函数:

#include <iostream>
using namespace std;
int f(int argument){   //这里的argument为参数,也称形参
        return argument - 1; //返回
}
int main(){
    int a = f(5);   //这里的5为实参,与f(int argument)中的argument对应,即argument = 5,因此这里的a为5
    return 0;
}

函数的嵌套调用:

#include <iostream>
using namespace std;
int f(){
}
int g(){
    f();    //g函数中调用了f函数
}
int h(){
    g();     //h()函数中调用了g函数
}
int main(){
    h();      //主函数中调用了h()函数
return 0;
}

特殊的嵌套函数,递归函数(迭代)

#include <iostream>
using namespace std;
int f(int argument){
    if(argument > 0)    //设置一个终止递归的条件
        return f(argument - 1);  //递归开始,返回值为f函数,但参数为原参数-1
}
int main(){
    int a = f(5);    //此时a的最终结果为1
    return 0;
}

下面用递归写一个小程序,要求如下:
例:一个函数要求输出其特定平方和,例如输入某一数5 则要求输出 25(5^2) + 16(4^2) + 9(3^2) + 4(2^2) + 1= 55. 代码如下:

#include <iostream>
using namespace std;
int quersum(int a){
    int sum;
    if(a > 1){
        cout << a * a << " + "; //在1前面输出的都是xx +的形式
        return a * a + quersum(a - 1);  //进行递归,同时
    }
    else if(a == 1){ 
        cout << "1 = ";  //等于1时意味着递归结束
        return 1;
}
int main(){
    int a;
    cin >> a;
    int sum = quersum(a);  //调用递归
    cout << sum;
    return 0;
}

如有错误,欢迎大家批评与指正!

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在C语言,主函数(main函数)可以通过调用函数来实现特定的功能。调用函数的过程包括以下几个步骤: 1. 声明函数的原型:在主函数的前面声明函数的原型,以便主函数能够正确调用函数。原型包括函数的返回类型、函数名和参数列表。例如,如果函数的原型为 `int add(int a, int b);`,则在主函数开始的地方加上 `int add(int, int);`。 2. 编写函数:在主函数的后面编写函数的定义。函数的定义包括函数的返回类型、函数名和参数列表,以及具体的函数体。例如,定义一个加法函数 `int add(int a, int b) { return a + b; }`。 3. 在主函数调用函数:在主函数调用函数时,使用函数函数名加上实际的参数列表。例如,调用上述定义的加法函数可以写为 `int result = add(3, 4);`,该语句将返回加法函数的结果并赋值给变量 `result`。 4. 处理函数的返回值:根据函数的返回类型来确定如何处理返回值。如果函数的返回类型是 `void`,则不需要对返回值进行处理;如果函数的返回类型是其他类型,则可以将返回值赋给变量或者直接使用。 总之,通过在主函数声明函数的原型,编写函数的定义,然后在主函数调用函数,我们可以实现主函数函数的调用。这样可以将程序的功能模块化,并更好地组织和管理代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值