C程序设计进阶 Coursera 第3周 递归

第3周

函数的递归

在这里插入图片描述
函数的嵌套调用:
在这里插入图片描述
在这里插入图片描述
函数不能嵌套定义,但是能嵌套调用
在这里插入图片描述
在这里插入图片描述
fact里面嵌套了自己;
在这里插入图片描述
每次调用都会开出新的内存空间
在这里插入图片描述

递归调用的过程

cin.get()可以把空格和回车都读进去,遇到终止符号结束。

第四步读取换行符
在这里插入图片描述
在这里插入图片描述

切饼 等用递归解决递推

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
递推 递归区别
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

递归应用–重复模拟一个动作

反复重复一个动作。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这边是分解问题。从两头锊。
3个盘子,通过B把A的转移到C
在这里插入图片描述
移动3个盘子的问题,被简化为移动2个盘子问题。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
单次完成的步骤,前后两次之间的关系,以及边界条件。

放苹果 --自动分析(分析个数)


如果盘子多,那肯定有空余盘子,所以可以把多余的丢掉。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
把所有的放置方法都可以分为有盘子空,没有盘子空。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有点厉害啊。这思路无敌,主要分治的思想。
在这里插入图片描述
上面代码好像有点问题。不过思想很好。
在这里插入图片描述

小结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

逆波兰表达式 --自动分析(分析个数)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
利用switch可以简化if else语句
cin>>一个一个符号的读取。
在这里插入图片描述

习题课

在这里插入图片描述
这题的难处就是怎么把所有的情况都列举出来。
在这里插入图片描述
模拟题,这里面是前一天与现在的区别。
在这里插入图片描述
在这里插入图片描述
bool,int=f(str,s)这边是判断str从s之后上一次是否能匹配,和右括号位置。
在这里插入图片描述
这里通过全局变量的形式增加返回值,可以用括号表达式,(,,,,)最终返回的是括号最右边的表示式结果。

#include <iostream>
using namespace std;

bool b;
int f(char str[], int s){
	if (strlen(str)==s)
	{	
		return (b=true,-1);
	}
	else{
		if (str[s]=='(')
		{
			int n;
			(b, n) = f(str,s+1);
			if (b==false)
			{
				return (b=false,n);
			}
			else
			{
				if (str[n]==')')
				{
					return	f(str, n + 1);
				}
				else
				{
					return (b = false, n); 
				}
			}


		}
		else
		{
			return (b = true, s);
		}
	}
}

int main(){
	char str[100]; cin.getline(str, 100);
	int n; n = f(str,0);
	if (b==true&&n==-1)
	{
		cout << 'Y' << endl;
	}
	else
	{
		cout << 'N'<< endl;
	}
	return 0;

}

这代码真是给跪了。。。。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值