- 5
- 0
- 约5.99千字
- 约 9页
- 2017-08-14 发布于重庆
- 举报
李明明算法分析试验一.doc
实验一 分治与递归(2学时)
基本题一:基本递归算法
一、实验目的与要求
熟悉C/C++语言的集成开发环境;
通过本实验加深对递归过程的理解
二、实验内容:
掌握递归算法的概念和基本思想,分析并掌握“整数划分”问题的递归算法。
三、实验题
任意输入一个整数,输出结果能够用递归方法实现整数的划分。
实验过程:
#include iostream
using namespace std;
int a[100],t;
void shuchu(int m,int i)
{
int j,sum=0;
for(j=0;ji;j++)//作用是由于递归,所以判断是否递归退栈之后仍然满足划分条件
sum+=a[j];
if(sum==t)//原因同上l
{
for(j=0;ji;j++)
couta[j];
coutendl;
}
}
void f(int n,int m,int i)
{
if(n==0||m==0)
shuchu(m,i);
else if(mnn0)
f(n,n,i);
else
{
a[i]=m;
//i++;
f(n-m,m,i+1);//这个函数的作用是指包含最大值是m的那些组合,就是a[0]是m,然后剩下的n-m中,关于m再继续划分就可以,所以应该是在i+1的位子上进行
f(n,m-1,i);
//这个函数的作用是不包含最大值m的组合,需要的就是将最大值是m
原创力文档

文档评论(0)