初学函数,没有见识过太多的题型,就已经做过的题分析一下题型,仅代表自己的观点。
一、简单直接调用
这一类题型大都非常简单,实参与形参大都没有太大的关联,实参和形参的存在意义就是传递参数值,直接将主函数中的一部分功能放入子函数中调用即可。
例如:数字反转问题
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零。
#include<bits/stdc++.h>
using namespace std;
int ji(int n)
{
int s=0;
while (n!=0)
{
s=s*10+n%10;
n=n/10;
}
return s;
}
int main()
{
int m,t;
cin>>m;
if(m==0)
cout<<"0";
else
cout<<ji(m)<<endl;
return 0;
}
二、实参与形参之间存在联系
此时,我们应该考虑传引用和传地址等方法。
例如我们之前所说过的swap类型函数,输出值与形参实参都存在联系时,这时我们一定要选择传引用或传地址等传值方法,如果依旧引用传数值的方法,结果一定是错误的。我们看到题首先应该考虑形参与实参之间是怎样的关系。此处不再举例说明。
三、递归函数的使用
在使用递归函数之前,我们应该首先考虑1、描述问题规模逐步缩小的递归算法。2、描述基本情况递归终止条件。(等我完成这一部分的练习题再进行归纳总结)。