之前呢,我上课,然后我上课呢,把概念转发了啊,概念转发了之后呢,到了新浪微博,有人开始问我说递归的本质是什么,我也觉得这个问题非常的好,递归的本质到底是什么呢?
不是哥们,递归和递推不是同一个东西!!!!!!!!!!
递归是什么?递归是有了已知条件,除了已知条件外的所有都可以用一个方法表示出来,这个方法可以自己调用自己,这个方法就叫做递归的方法。
递推是什么?递推是有了已知条件,所有的其他状态都可以由这个状态变化而来,这个状态到另一个状态的变化可以用一种关系表达式表达出来,这个关系表达式就叫做递推两个状态之间的关系。
从大到小都忘了?
666哥么
2024六月八,端午节来了,祝高考的旗开得胜,中考的器宇轩昂,也祝我好好考完小考
我第天
正题:
答案放送!!!!!!!!!!!!!!!!!!!!!!!!
2024.6.8 21:30:00 ASDF ATN
the 1st
先来道斐波那切给大家激发一下啊
#include <iostream>
#define int long long //使用宏表示longlong
using namespace std;
int feb[50]={}; //搞个数组,和埃氏筛一样
int f(int n) {
if(feb[n]!=0) return feb[n];
if(n==1||n==2) return 1;
feb[n] = f(n-1)+f(n-2); //改数组去,值从入口里递归出来
return feb[n]; //好了,改好了,值就是数组里那个
}
signed main() { //使用宏表示longlong,则main变成longlong main
int n;
cin >> n; //输入
cout << f(n); //输出
return 0; //回0
}
其实这玩意可以算的:
x是第几项(在斐波那契里面)
the 2nd
这个骨牌铺方格很有趣,可以研究一下
#include <iostream>
using namespace std;
int main(){
int i,n;
long long a[55];
cin>>n;
for (i=1;i<=n;i++){
if (i==1)a[i]=1;
else if (i==2)a[i]=2;
else if (i==3)a[i]=4;
else if (i>3)a[i]=a[i-1]+a[i-2]+a[i-3];
}
cout<<a[n];
return 0;
}
the 3rd
平面分割,嗯,真是一个好问题,使我的双手飞快
#include<bits/stdc++.h>
using namespace std;
/*
f(n) = f(n - 1) + n
= f(n - 2) + (n - 1) + n
……
= f(1) + 1 + 2 + …… + n
= n(n + 1) / 2 + 1
看的懂?
*/
int main () {
int n;
cin>>n;
cout<<n*(n+1)/2+1;
return 0;
}
the 4th
昆虫繁殖,这个需要细究
#include<bits/stdc++.h>
using namespace std;
int f[55], e[55];
int main() {
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
for(int i = 0; i < x; i++) f[i] = 1;
for(int i = x; i <= z; i++) {
e[i] = f[i - x] * y;
f[i] = f[i - 1] + e[i - 2];
}
printf("%d\n", f[z]);
}
the 5th
位数问题,这个可以去查
#include<bits/stdc++.h>
using namespace std;
int main () {
int n,o[1010]={},j[1010]={},x=9;
cin>>n;
o[1]=9,j[1]=1;
for(int i=2;i<=n;i++){
if(i==n){
x=8;
}
o[i] = (x*o[i-1]+j[i-1])%12345;
j[i] = (x*j[i-1]+o[i-1])%12345;
}
cout<<o[n];
return 0;
}
the 6th
吃糖果这个有点难
#include<bits/stdc++.h>
using namespace std;
int qiangsirxp(int n){
if(n <= 3){
if(n==1){
return 0;
}
return 1;
}
else{
return qiangsirxp(n-1)+qiangsirxp(n-2);
}
}
int main(){
int n;
cin>>n;
cout<<qiangsirxp(n+2);
return 0;
}
the 7th
外星密码这个还好
#include <iostream>
using namespace std;
int pell(int k) {
if (k == 1) return 1;
if (k == 2) return 2;
int a = 1, b = 2, c;
for (int i = 3; i <= k; ++i) {
c = (2 * b + a) % 32767;
a = b;
b = c;
}
return c;
}
int main() {
int n;
cin >> n;
while (n--) {
int k;
cin >> k;
cout << pell(k) << endl;
}
return 0;
}
对了,这里有但的改版,确定不看看?
@小蛋の 编程
(容器,他们就看得懂一个longlong,一点注释不写,你当这是下节课呢,
我喆哥,我亲哥!代码加点注释,你至少让其他的人看懂!,就哪怕那么一点!)
#include <bits/stdc++.h>
#define pb push_back //定义
using namespace std;
int main(){
vector<long long> p(1,1); //容器
p.pb(1);
p.pb(2);
int n,a[21]={};
cin>>n;
int m=0;
for(int i=1; i<=n; i++){
cin >> a[i];
if(a[i]>m) m=a[i];
}
for(int i=3; i<=m; i++){
p.pb((2*p[i-1]+p[i-2])%32767);
for(int i=1; i<=n; i++){
cout << p[a[i]] << '\n'; //容器p,a数组
}
return 0;
}
最后:
inft