1、鼠标双击或者右击打开桌面上DEVc++软件,让其运行起来。Dev-C++是一个电脑Windows窗口运行环境下的一款非常适合于刚开始学习c++学者使用的入门级C/C++ 集成开发环境(IDE)。这款软件很自由,遵守GPL许可协议分发源代码。它大大集成了MinGW中的GCC编译器、GDB调试器和 AStyle格式整理器等众多自由软件。非常的试用,而且界面分类清楚,具有很强大的功能。
2、点开文件,选择新建源代码,这时候新建的代码文本还是没有命名的,是一个空命名的文件,下面我们可以通过界面左上角的文件选项,选择另存为,可以存在电脑里任何一个盘,小编为了下次可以更好的找到文件,我存在电脑的桌面上。当然你们可以选择任何一个盘,根据各人所需
3、 什么是递归? 递归是指某个函数直接或间接的调用自身。问题的求解过程就 是划分成许多相同性质的子问题的求解,而小问题的求解过程 可以很容易的求出,这些子问题的解就构成里原问题的解。 总体思想: 将待求解问题的解看作输入变量x的函数f(x) 通过寻找函数g,使得f(x) = g(f(x-1)) 并且已知f(0)的值,就可以通过f(0)和g求出f(x)的值. 这样一个思想也可以推广到多个输入变量x,y,z等,x-1 也可以推广到 x - x1,只要递归朝着出口的方向走就可以 了.
4、递归的几个特点 递归式:如何将原问题划分成子问题。 递归出口:递归终止的条件,即最小子问题的求 解,可以允许多个出口。 界函数:问题规模变化的函数,它保证递归的规模 向出口条件靠拢
5、常见的利用递归思想例题:例:菲波那契数列输入一个整数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);}
6、例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)
7、程序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.