作者:兰州锝TC
学习资源
2个可以查询编程语言语法的网站:
1.菜鸟教程
2.w3school
2.14日题解
- 待更新
往日内容
- 2.7 lesson29-lesson35数据的存储和输入
- 2.8 lesson36-lesson42 程序的选择执行(if-else、switch)
- 2.10 lesson43-lesson49 for循环
- 2.11 lesson50-lesson56 while循环&do-while循环
- 2.12 lesson57-lesson63 数据的批量处理—数组(array)
- 2.13 lesson64-lesson70 数据的批量处理—数组2(array)
- 2.15 lesson71-lesson77 算法复杂度&二分查找算法&高精度数值处理&函数
今日内容:
- 递归是一种很常用的算法思想
- 它可以让程序很直观
- 但是有个缺点:效率较低,计算机不喜欢递归程序(当递归层数很多的时候,占用很多空间,甚至终止程序运行)
- 但是,很多问题用递归实现很方便(同一个问题使用递归不一定比不使用递归算法复杂度高)
- 有些问题不用递归的话,会相当相当相当麻烦
- 为了轻松愉快地使用递归(函数),我们再先顾一下昨天的函数内容:
知识回顾:函数
- 左右两个程序,分别是不使用函数和使用函数的程序,请仔细阅读感受两者的区别
- 感受下面这道例题:
递归函数上线
//斐波那契数列练习答案
#include<iostream>
using namespace std;
int n;
int fib(int n)
{
if(n<=1) return n;
return(fib(n-1)+fib(n-2))%1000;
}
int main()
{
cin>>n;
cout<<fib(n)<<endl;
return 0;
}
//最大公约数练习答案
#include<iostream>
using namespace std;
int Gcd(int m,int n)
{
return (n==0)?m:Gcd(n,m%n);
}
int main()
{
int m,n;
cin>>m>>n;
cout<<Gcd(m,n)<<endl;
return 0;
}
对应慕课
- 北京大学_郭炜_程序设计与算法(二)
- 请观看第二周和第三周的视频