C语言——用递归算法判断数组是否为一个递增数组
2016-12-14 21:47
253 查看
1.递归一定要有退出条件,否则将无限循环。
2.关于递归的返回值是要注意的。
下面列举两种方法,原理相同,递归判断。
方法1:
bool charge(int p[],int n)
{
static int m=0; //这个一定要定义为static,否则每次调用都是从0开始。
if(m == n-1)
return true;
else
{
if(p[m]<p[m+1])
{
m=m+1;
return charge(p,n); //最初是没有把charge(p,n)作为return语句,这样,我在内层递归结束,返回结果后,调用的程序不知道该怎么返回结果了。只有这样将内存递归结果做为返回值返回给上层,这样可以保证返回值结果是一致的,也是想要的。
}
else
return false;
}
}
int main()
{
int a[5]={1,2,3,5,4};
bool flag=false;
flag=charge(a,5);
if (flag)
printf("yes\n");
else
printf("false\n");
system("pause");
return 0;
}
方法2:
bool charge(int p[],int n)
{
if(n==1)
return true;
else
{
if(p[n-1]>p[n-2])
{
return charge(p,n-1);
}
else
return false;
}
}
2.关于递归的返回值是要注意的。
下面列举两种方法,原理相同,递归判断。
方法1:
bool charge(int p[],int n)
{
static int m=0; //这个一定要定义为static,否则每次调用都是从0开始。
if(m == n-1)
return true;
else
{
if(p[m]<p[m+1])
{
m=m+1;
return charge(p,n); //最初是没有把charge(p,n)作为return语句,这样,我在内层递归结束,返回结果后,调用的程序不知道该怎么返回结果了。只有这样将内存递归结果做为返回值返回给上层,这样可以保证返回值结果是一致的,也是想要的。
}
else
return false;
}
}
int main()
{
int a[5]={1,2,3,5,4};
bool flag=false;
flag=charge(a,5);
if (flag)
printf("yes\n");
else
printf("false\n");
system("pause");
return 0;
}
方法2:
bool charge(int p[],int n)
{
if(n==1)
return true;
else
{
if(p[n-1]>p[n-2])
{
return charge(p,n-1);
}
else
return false;
}
}
相关文章推荐
- acm奋斗的小蜗牛
- C/C++语言库函数atoi字符串转换成整型数
- Java基础 - 线段树C/C++版(Segment Tree)三
- c语言实现端口扫描程序
- 足球运动训练心得及经验分析-c语言学习调查
- OJ.坐公交
- 实现简单的端口连接程序C/C++
- C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
- OJ.麦兜翻煎饼
- mac os x 将C文件编译成.so库
- POJ 1163 C++:The Triangle
- C与C++中字符串的输入
- C++嵌入对象
- C语言控制台窗口图形界面编程(
- leetcode 357 c++. Count Numbers with Unique Digits
- Java基础 - 线段树C/C++版(Segment Tree)二
- C++类的DLL,C++静态调用。
- C++ ## ... 实用
- C++服务器开发之基于对象的编程风格
- C++服务器开发之基于对象的编程风格