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;
}

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

猜你喜欢

转载自blog.csdn.net/WJ_SHI/article/details/81489679