手把手教你c++函数递归
的有关信息介绍如下:C++是C语言的继承,它是一种使用非常广泛的计算机编程语言,C++作为一种静态数据类型检查的、支持多范型的通用程序设计语言,能够支持过程化程序设计、数据抽象化、面向对象程序设计、泛型程序设计、基于原则设计等多种程序设计风格。C++的编程领域众广,常用于系统开发,引擎开发等应用领域,深受广大程序员的喜爱。那么c++数学库里有哪些函数呢,下面小编手把手教你,一起来。
鼠标双击或者右击打开桌面上DEVc++软件,让其运行起来。Dev-C++是一个电脑Windows窗口运行环境下的一款非常适合于刚开始学习c++学者使用的入门级C/C++ 集成开发环境(IDE)。这款软件很自由,遵守GPL许可协议分发源代码。它大大集成了MinGW中的GCC编译器、GDB调试器和 AStyle格式整理器等众多自由软件。非常的试用,而且界面分类清楚,具有很强大的功能。
点开文件,选择新建源代码,这时候新建的代码文本还是没有命名的,是一个空命名的文件,下面我们可以通过界面左上角的文件选项,选择另存为,可以存在电脑里任何一个盘,小编为了下次可以更好的找到文件,我存在电脑的桌面上。当然你们可以选择任何一个盘,根据各人所需
什么是递归?
递归是指某个函数直接或间接的调用自身。问题的求解过程就 是划分成许多相同性质的子问题的求解,而小问题的求解过程 可以很容易的求出,这些子问题的解就构成里原问题的解。
总体思想:
将待求解问题的解看作输入变量x的函数f(x)
通过寻找函数g,使得f(x) = g(f(x-1))
并且已知f(0)的值,就可以通过f(0)和g求出f(x)的值.
这样一个思想也可以推广到多个输入变量x,y,z等,x-1 也可以推广到 x - x1,只要递归朝着出口的方向走就可以 了.
递归的几个特点
递归式:如何将原问题划分成子问题。
递归出口:递归终止的条件,即最小子问题的求 解,可以允许多个出口。
界函数:问题规模变化的函数,它保证递归的规模 向出口条件靠拢
常见的利用递归思想例题:
例:菲波那契数列
输入一个整数n,求菲波那契数列的第n项. 算法:设第n项值为f(n),则
f(n) = f(n-1)+f(n-2).已知f(1)=1,f(2)=1,则从第 3项开始,可以用公式求.
程序:int f(int n){
if(n==1 || n==2) return 1;
else return f(n-1)+f(n-2);
}
例2:放苹果
输入:m个苹果,n个盘子,问多少种不同放法.
算法:设f(m,n) 为m个苹果,n个盘子的放法数目,则先 对n作讨论,
当n>m:必定有n-m个盘子永远空着,去掉它们对摆放苹果方 法数目不产生影响。即
if(n>m) f(m,n) = f(m,m)
当n<=m:不同的放法可以分成两类:
1、有至少一个盘子空着,即相当于f(m,n) = f(m,n-1); 或
2、所有盘子都有苹果,相当于可以从每个盘子中拿掉一个苹
果,不影响不同放法的数目,即
f(m,n) = f(m-n,n).
而总的放苹果的放法数目等于两者的和,即
f(m,n) =f(m,n-1)+f(m-n,n)
程序
int f(int m, int n){
if(n==1 || m==0) return 1; if(n>m) return f(m,m); return f(m,n-1)+f(m-n,n);
}
出口条件说明:
当n=1时,所有苹果都必须放在一个盘子里,所以返回1;
当没有苹果可放时,定义为1种放法;
递归的两条路,第一条n会逐渐减少,终会到达出口n==1; 第二
条m会逐渐减少,因为n>m时,我们会return f(m,m)
到达出口m==0.