C语言第十九讲——函数(2)
课堂笔记
#include <iostream>
using namespace std;
#include <time.h>
#include <stdlib.h>
练习:1:设计一个函数,其功能是计算一个正整数n的阶乘。
2:设计一个函数,其功能是将作为参数的正整数反转,比如123,变成321.
//返回值:函数值, 如果有值类型,你需要返回相应类型的一个值
//()中的参数列表: 自变量,你要操作的对象
//
int fact(int n)
{
int i,f;
f=1;
for(i=1;i<=n;i++)
{
f=f*i;
}
return f;
}
//参数:正整数
//函数值:逆转之后的正整数
int reverse(int n)
{
int m=0;
do
{
m=m*10+n%10; //n=123 ,m=3,n=12,m=32
n=n/10; //n=12,1
}while(n!=0);
return m;
}
int main(int argc, char** argv) {
cout<<fact(10)<<endl;
cout<<reverse(100)<<endl;
return 0;
}
#include <iostream>
using namespace std;
#include <time.h>
#include <stdlib.h>
//递归函数:直接或者间接调用自己的函数
//1.演示普通的函数定义与调用
void f()
{
cout<<"in function f."<<endl;
}
void g()
{
cout<<"in function g."<<endl;
f();
}
void h()
{
cout<<"in function h."<<endl;
g();
}
int main(int argc, char** argv) {
h();
return 0;
}
#include <iostream>
using namespace std;
#include <time.h>
#include <stdlib.h>
//递归函数:直接或者间接调用自己的函数
//阶乘: n!=n*(n-1)!,
//递推规律:f(n)=n! f(n)=n*f(n-1);
//递归出口:0!=1; f(0)=1;
double f(double n)
{
if(n==0)
return 1;
else
return n*f(n-1);
//main f(5) f(4) f(3) f(2) f(1)
//f(5) 5*f(4) 4*f(3) 3*f(2) 2*f(1) 1*f(0)
//120 5*4*3*2*1*1 4*3*2*1*1 3*2*1*1 2*1*1 1*1
}
//fibbonacci数列,递归写法
//递归出口:f(1)=f(2)=1, 递推规律:f(n)=f(n-1)+f(n-2)
int g(int n)
{
if(n==1 || n==2)
return 1;
else
return g(n-1)+g(n-2);
}
//缺点:递归函数的缺点是效率低,但优点是设计容易
int main(int argc, char** argv) {
cout<<f(5)<<endl;
for(int i=1;i<=10;i++)
cout<<g(i)<<endl;
return 0;
}
代码编写
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop *///1.阶乘
int f(int n)
{if(n==0)return 1;elsen=n*f(n-1);return n;} //2.斐波那契数列
int g(int i)
{if(i==1 || i==2)return 1;else return g(i-1)+g(i-2);
}//3.练习:一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。//这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?//经过每个村子卖出多少只鸭子??利用递归函数来实现该算法。
int d(int c)
{if(c==8)return 2;elsereturn d(c+1)*2+2;}int main(int argc, char** argv) {
// int p;
// cout<<f(10)<<endl;
// for(p=1;p<=10;p++)
// cout<<g(p)<<endl;cout<<d(1)<<endl;return 0;
}
void f()
{cout<<"in function f."<<endl;}
void g()
{cout<<"in function g."<<endl;f();
}
void h()
{cout<<"in function h."<<endl;g();
} int main(int argc, char** argv) { h(); return 0;
}
学习总结
进一步理解了函数,自己可以简单运用了,不过还是在入门级别
C语言第十九讲——函数(2)相关推荐
- r library car_第三十九讲 R语言-线性回归:自变量中存在分类变量时
当我们提到"线性"回归时,特指的是因变量(结果变量)为连续性变量,与自变量(预测变量)有线性关系,而对自变量(预测变量)并没有要求一定要是连续性变量.前面我们已经提到,当自变量是连 ...
- C++面向对象高级编程十九讲
文章目录 0 背景 1 内容 0 背景 因为本人的C++基础不是很扎实,很多面向对象的基本语法掌握的不是很熟练,导致写程序出错时,经常会犯错,于是就去网上找到了侯捷老师的C++课进行观摩学习. 本文是 ...
- 以下关于java的GUI菜单描述_第十九讲 菜单和JavaGUI综合设计
第十九讲菜单和JavaGUI综合设计 主要内容 菜单(JMenuBar.JMenu.JmenuItem) 菜单项的事件侦听处理 颜色选择器JColorChooser 文件选择器JFileChooser ...
- 趣谈网络协议笔记-二(第十九讲)
趣谈网络协议笔记-二(第十九讲) HttpDNS:网络世界的地址簿也会指错路 自勉 勿谓言之不预也 -- 向为祖国牺牲的先烈致敬! 引用 dns缓存刷新时间是多久?dns本地缓存时间介绍 - 东大网管 ...
- 【genius_platform软件平台开发】第七十九讲:Linux系统中可执行程序后台运行的几种方式
[genius_platform软件平台开发]第七十九讲:Linux系统中可执行程序后台运行的几种方式 1. 问题描述 2. & 符号 3. nohup指令 4. ctrl + z.jobs. ...
- 名词解释第二十九讲:搬砖
这里是王团长区块链学院,与最优秀的区块链人一起成长!今天给大家讲讲搬砖. 点击观看视频教程:名词解释第二十九讲:搬砖 2017年,有一个非常热门的词叫"搬砖",当然,这个" ...
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第十九讲:apache+php+mysql开发环境搭建(wamp)
陈力:传智播客古代 珍宝币 泡泡龙游戏开发第十九讲:apache+php+mysql开发环境搭建(wamp) window环境下进行网站建设时,必须要进行wamp环境的搭建.本文介绍了如果配置apac ...
- 第十九讲:爱情:如何让爱情天长地久 第二十讲:幽默 第二十一讲:爱情自尊
(注:此为课程第十九课,更新于2017年7月16日) 大家好! 今天我们继续谈论爱情,讲之前先说一下,一位叫Nadia的同学,你的钥匙链落在这教室了,就在我这里,课后请来我这里取. 那我们来讲讲爱情吧 ...
- 【C语言进阶深度学习记录】二十九 main函数与命令行参数
文章目录 1 main函数的返回值 2 main函数的参数 2.1 main函数的参数的代码案例分析 3 main函数不一定是程序中第一个执行的函数 4 总结 1 main函数的返回值 main函数是 ...
最新文章
- CYQ.Data.ProjectTool 项目配置工具发布(包源码)
- ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线
- 只能是做的HTML5审批流项目
- java如何快速抛出异常,异常 - 如何抛出异常 - 《Java 编程要点(Essential Java)》 - 书栈网 · BookStack...
- 机器学习 Machine Learning中向量化矩阵化的技巧
- Arcgis javascript那些事儿(十五)——影像服务的发布与使用
- dmg镜像如何写入u盘_最全macOS官方全家桶原版系统镜像
- Java主要学习哪些内容
- 齐岳|马钱苷酸小麦麦清白蛋白纳米粒|雷公藤红素乳清白蛋白纳米粒Celastrol-whey protein
- Android基础学习(十五)—— 序列化与反序列化(包括 JSON、GSON))
- 依分布收敛的定义细节
- 差异基因p为0_RNAseq数据分析文献22差异基因与临床数据相关性分析
- 常用、免费的API接口网址
- 力扣(83.643)补8.29
- 加密解密,MySQL单行函数,数学函数字符串日期时间,流程控制,完整详细可收藏查询SQL
- NET连接mysql字符串
- Java+MySQL基于SSM的二手玩具交换网站
- 部分ADSL猫的默认密码
- ModuleNotFoundError: No module named ‘django‘
- 世界上第一台电子数字式计算机诞生于美国,世界上公认的第一台电子数字计算机诞生于哪年哪个国家?...
热门文章
- Matlab如何打开新版本程序,求助:老程序在新版本的matlab中运行
- 王道作业Python
- informatica使用问题汇总
- C发展史: KR C/C89/C99/C11 以及 C++发展史: C++98/C++03/C++11
- 第三方服务之Bmob——答题系统小项目
- 基于web的在线考试系统的设计与开发
- 达梦数据库角色详解——VTI、SOI
- OCA/OCP Oracle 数据库12c考试指南读书笔记:第15章: Oracle Storage
- 深入理解递归:美丽的科赫雪花
- ERP采购管理系统软件