C++——函数的调用
调用前先声明函数:
>>若函数定义在调用点之前,则无需另外声明
>>若函数定义在调用点之后,则需要在调用函数前按如下形式声明函数原型(原型声明)
类型标识符 被调用函数名(含类型说明的形参表)
调用形式
函数名(实参列表)
嵌套调用
在一个函数的函数体中。可以调用另一函数,称为嵌套调用
递归调用:
函数直接或间接调用自身
例一:编写一个求x的n次方的函数
#include<iostream>
using namespace std; double power(double x, int n)
{
double val = 1.0;
while (n--)
val *= x;
return val;
} int main()
{
cout << "5 to the power 2 is "<<power(,) << endl;
system("pause");
return ;
}
输出结果为25
例二:数制转换:
输入一个8位二进制数,将其转化为十进制数输出。
#include<iostream>
using namespace std; double power(double x, int n);//计算x的n次方 int main()
{
int value = ;
cout << "Enter an 8 bit binary number ";
for (int i = ; i >= ; i--)
{
char ch;
cin >> ch;
if (ch == '')
value += static_cast<int>(power(, i));
}
cout << "Decimal value is " << value << endl;
system("pause");
return ;
} double power(double x, int n)
{
double val = 1.0;
while (n--)
val *= x;
return val;
}
输出结果:

例三:编写程序求π的值
π = 16arctan(1/5)-4arctan(1/239)
arctanx = x - x3/3 + x5/5 - x7/7直到级数某项绝对值不大于10-15为止,π和x均为double型
#include<iostream>
using namespace std; double arctan(double x)
{
double sqr = x * x;
double e = x;
double r = ;
int i = ;
while (e / i > 1e-)
{
double f = e / i;
r = (i % == ) ? r + f : r - f;
e = e * sqr;
i += ;
}
return r;
} int main()
{
double a = 16.0 * arctan( / 5.0);
double b = 4.0 * arctan( / 239.0);
cout << "PI = " << a - b << endl;
return ;
}#include<iostream>
using namespace std; double arctan(double x)
{
double sqr = x * x;
double e = x;
double r = ;
int i = ;
while (e / i > 1e-)
{
double f = e / i;
r = (i % == ) ? r + f : r - f;
e = e * sqr;
i += ;
}
return r;
} int main()
{
double a = 16.0 * arctan( / 5.0);
double b = 4.0 * arctan( / 239.0);
cout << "PI = " << a - b << endl;
return ;
}
输出结果为3.14159
例四:
寻找并输出11-999之间的数m,他满足m,m2,m3都是回文数
#include<iostream>
using namespace std; bool symm(unsigned n)
{
unsigned i = n;
unsigned m = ;
while (i > )
{
m = m * + i % ;
i /= ;
}
return m == n;
} int main()
{
for(unsigned m = ;m<;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;
}
system("pause");
return ;
}
输出结果:

例五:

#include<iostream>
#include<cmath>
using namespace std; const double TINY_VALUE = 1e-; double tsin(double x)
{
double g = ;
double t = x;
int n = ;
do
{
g += t;
n++;
t = -t * x * x / ( * n - ) / ( * n - );
} while (fabs(t) >= TINY_VALUE);
return g;
} int main()
{
double k, r, s;
cout << "r =";
cin >> r;
cout << "s =";
cin >> s;
if (r * r <= s * s)
k = sqrt(tsin(r)*tsin(r) + tsin(s)*tsin(s));
else
k = tsin(r * s) / ;
cout << k << endl;
system("pause");
return ;
}
输出结果:

嵌套调用

嵌套调用举例:
输入两个整数,求平方和:
#include<iostream>
using namespace std; int fun2(int m)
{
return m * m;
} int fun1(int x, int y)
{
return fun2(x) + fun2(y);
} int main()
{
int a, b;
cout << "Please enter two integers(a and b): ";
cin >> a >> b;
cout << "The sum of square of a nad b: " << fun1(a, b) << endl;
system("pause");
return ;
}

递归调用:
函数直接或间接地调用自身,称为递归调用、
递归过程的两个阶段:

递归调用举例:
求n!
#include<iostream>
using namespace std; unsigned fac(int n)
{
unsigned f;
if (n == )
f = ;
else
f = fac(n - ) * n;
return f;
} int main()
{
unsigned n;
cout << "Enter a positive integer: ";
cin >> n;
unsigned y = fac(n);
cout << n << "!=" << y << endl;
system("pause");
return ;
}

阶乘问题与或图

举例如下:
用递归发计算从n个人中选择k个人组成一个委员会的不同 组合数
分析:
>>由n个人里选k个人的组合数
= 由n-1个人里选k个人的组合数 + 由m-1个人里选k-1个人的组合数
当n = k 或k = 0时,组合数为1
#include<iostream>
using namespace std; int comm(int n, int k)
{
if (k > n)
return ;
else if (n == k || k == )
return ;
else
return comm(n - , k) + comm(n - , k - );
} int main()
{
int n, k;
cout << "Please enter two integers n and k: ";
cin >> n >> k;
cout << "C(n,k) = " << comm(n,k) << endl;
system("pause");
return ;
}
输出结果:

C++——函数的调用的更多相关文章
- Direct3D Draw函数 异步调用原理解析
概述 在D3D10中,一个基本的渲染流程可分为以下步骤: 清理帧缓存: 执行若干次的绘制: 通过Device API创建所需Buffer: 通过Map/Unmap填充数据到Buffer中: 将Buff ...
- Entity Framework 6 Recipes 2nd Edition(11-4)译 -> 在”模型定义”函数里调用另一个”模型定义”函数
11-4.在”模型定义”函数里调用另一个”模型定义”函数 问题 想要用一个”模型定义”函数去实现另一个”模型定义”函数 解决方案 假设我们已有一个公司合伙人关系连同它们的结构模型,如Figure 11 ...
- JS中函数的调用和this的值
调用每一个函数会暂停当前函数的执行,传递控制权和参数给新函数.除了声明时定义的形式参数,每个函数还接收两个附加的参数:this 和 arguments. 参数this在面向对象编程中非常重要,他的值取 ...
- jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法
jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法 在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们 ...
- LR自定义函数以及调用
2.2.自定义函数以及调用 2.2.1.虚拟用户编程,使用C# 语言DLL 在VS中建立DLL类库项目,编写函数时使用public声明:实现函数后编译生成DLL: 在LR中建立 .Net Vuser脚 ...
- LR常用函数以及调用自定义函数
2.LR常用函数以及调用自定义函数 2.1.LR常用函数以及对信息的判断 2.1.1. LR内部自定义函数 在LR脚本中定义变量和编写自定义函数,需将变量的声明放在脚本其他内容的上方,否则会提示[il ...
- Spring AOP在函数接口调用性能分析及其日志处理方面的应用
面向切面编程可以实现在不修改原来代码的情况下,增加我们所需的业务处理逻辑,比如:添加日志.本文AOP实例是基于Aspect Around注解实现的,我们需要在调用API函数的时候,统计函数调用的具体信 ...
- 【C语言入门教程】5.3 函数的调用 与 参数
函数通过调用获得程序的控制权,函数的参数是调用者与函数的数据接口.函数可以定义一个或多个参数,也可以省略参数,调用时将与参数的数据类型相匹配的数据置于参数列表中,即可在函数体内使用.参数的调用有多种形 ...
- python 函数的调用 和执行 小知识
1.符号表 执行一个函数会引入一个用于函数的局部变量的新符号表. 更确切地说, 函数中的所有的赋值都是将值存储在局部符号表: 而变量引用首先查找局部符号表, 然后是上层函数的局部符号表, 然后是全局符 ...
- probe函数何时调用的
转自:http://blog.csdn.net/xiafeng1113/article/details/8030248 Linux中 probe函数何时调用的 所以的驱动教程上都说:只有设备和驱动的名 ...
随机推荐
- meta标签有何作用?一起来学习一下
平日里总是沉迷于写页面写组件思考业务逻辑,解决冲突找出bug,猛的发现躲在head标签里的一大串标签时什么?这么多meta标签好多居然都不知其存在的意义.所以决定记录一下学习到的知识点. 先搞明白以上 ...
- HttpClient 模拟发送Post和Get请求 并用fastjson对返回json字符串数据解析,和HttpClient一些参数方法的deprecated(弃用)的综合总结
最近在做一个接口调用的时候用到Apache的httpclient时候,发现引入最新版本4.5,DefaultHttpClient等老版本常用的类已经过时了,不推荐使用了:去官网看了一下在4.3之后就抛 ...
- django[post与get测试]
首先先看一下代码:↓ 后台: 前端展示: 测试结果:
- 使用python写天气预告
先去YY天气注册一个账号,然后就能用API了 http://www.yytianqi.com/ # encoding=utf-8import urllib.requestimport jsonimpo ...
- hdu_1042(模拟大数乘法)
计算n! #include<cstring> #include<cstdio> using namespace std; ]; int main() { int n; whil ...
- vuex的使用及持久化state的方式
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 当我们接触vuex的时候,这是我们最先看到 ...
- git工作流程一览
Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上.协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件 ...
- 【Jsp/Servlet】获取客户端使用的ip
一般使用jsp的时候大多数时间都可以使用request.getRemoteAddr() 来获取ip,但是这个前提是未经过反向代理等操作的原始地址,所以,需要在反向代理等操作之后还要获取客户端的ip变得 ...
- mysql中的union和order by、limit
我有一个表 CREATE TABLE `test1` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) N ...
- 解决mysql不是内部或外部命令
安装Mysql后,当我们在cmd中敲入mysql时会出现'Mysql'不是内部或外部命令,也不是可运行的程序或其处理文件. 工具/原料 mysql cmd 方法/步骤 1 打开我的电脑在我的电脑右键中 ...