简单递归换递推。

//这是递归
#include<iostream>
using namespace std;

int f(int n) {
    if(n==0 || n==1) return 1;
    return f(n-2) + f(n/2);
}

int main() {
    int n;
    cin >> n;
    cout << f(n) << endl;
    return 0;
}
//这是递推
#include<iostream>
using namespace std;

int f[1005]={1,1};
int main() {
    int n;
    cin >> n;
    for (int i = 2; i <= n; ++ i) {
        if (i - 2 >= 0)    f[i] += f[i - 2];
        if (i/2 > 0)    f[i] += f[i/2];
    }
    cout << f[n] << endl;
    return 0;
}

这两个代码都是实现 f(x)=f(x-2)+f(x/2)的。

具体就不讲了。一目了然,自己琢磨

复制去Google翻译翻译结果

时间: 2024-08-10 10:56:12

简单递归换递推。的相关文章

【递归与递推】编码

[递归与递推]编码 题目描述 编码工作常被运用于密文或压缩传输.这里我们用一种最简单的编码方式进行编码:把一些有规律的单词编成数宇. 字母表中共有26个字母{a,b,…,z},这些特殊的单词长度不超过6且字母按升序排列.把所有这样的单词放在一起,按字典顺序排列,一个单词的编码就对应着它在字典中的位置. 例如:    a→1    b→2    z→26    ab→27    ac→28 你的任务就是对于所给的单词,求出它的编码. 输入 仅一行,被编码的单词. 输出 仅一行,对应的编码.如果单词

递归、递推和迭代的区别

递归:函数本身调用自己,实现自身循环.例如:求斐波那契数 一列数的规则如下: 1.1.2.3.5.8.13.21.34...... 求第30位数是多少, /// <summary> /// 用递归算法实现斐波那契 /// </summary> /// <param name="i"></param> /// <returns></returns> public static int Fibonacci_recurs

【递归与递推】计数器

问题 F: [递归与递推]计数器 题目描述 一本书的页数为N,页码从1开始编起,请你求出全部页码中,用了多少个0,1,2,…,9.其中—个页码不含多余的0,如N=1234时第5页不是0005,只是5. 输入 一个正整数N(N≤109),表示总的页码. 输出 共十行:第k行为数字k-1的个数. 样例输入 11 样例输出 1 4 1 1 1 1 1 1 1 1 #include <iostream> #include <cstring> #include <cstdio>

【递归与递推】电话号码

问题 L: [递归与递推]电话号码 题目描述 电话机上每一个数字下面都写了若干个英文字母.分布如下:       1-abc       2-def       3-ghi       4-ikl       5-mn       6-opq       7-rst       8-uvw       9-xyz  现在给定一个单词表和一串数字密码,请你用单词表中的单词翻译这个密码. 输入 第一行为一个正整数N表示单词表中单词的个数(N≤100): 第二行为一个长度不超过100的数字串,表示密码

递归,递推,记忆化搜索,空间优化(数字三角形)

题目链接:http://poj.org/problem?id=1163 1.递归思想:第一层到最底层的最优路径可以分解为:第一层到第二层来,再加上第二层的最优路径 状态: Time Limit Exceeded #include <algorithm> #include <stdio.h> #define MAX 101 using namespace std; int maps[MAX][MAX]; int n; int Sum(int i,int j) { if(i==n) r

【递归与递推】诸侯安置

[递归与递推]诸侯安置 题目描述 很久以前,有一个强大的帝国,它的国土成正方形状,如图2—2所示. 这个国家有若干诸侯.由于这些诸侯都曾立下赫赫战功,国王准备给他们每人一块封地(正方形中的一格).但是,这些诸侯又非常好战,当两个诸侯位于同一行或同一列时,他们就会开战.如下图2—3为n=3时的国土,阴影部分表示诸侯所处的位置.前两幅图中的诸侯可以互相攻击,第三幅则不可以. 国王自然不愿意看到他的诸侯们互相开战,致使国家动荡不安.  因此,他希望通过合理的安排诸侯所处的位置,使他们两两之间都不能攻击

【递归与递推】排序集合

[递归与递推]排序集合 题目描述 对于集合N={1,2,…,n}的子集,定义一个称之为“小于”的关系:设S1={X1,X2,…,Xi},(X1<X2<…<Xi),S2={Y1, Y2, …,Yj},(Y1<Y2<…<Yj),如果存在一个k,(0≤k≤min(i,j)),使得X1=Y1,…,Xk=Yk,且k=i或X(k+1)<Y(k+1),则称S1“小于”S2.你的任务是,对于任意的n(n≤31)及k(k<2n),求出第k小的子集. 输入 仅一行,包含两个用空

【递归与递推】遍历问题

[递归与递推]遍历问题 题目描述 我们都很熟悉二叉树的前序.中序.后序遍历,在数据结构中常提出这样的问题:已知一棵二叉树的前序和中序遍历,求它的后序遍历,相应的,已知一棵二叉树的后序遍历和中序遍历序列你也能求出它的前序遍历.然而给定一棵二叉树的前序和后序遍历,你却不能确定其中序遍历序列,考虑如下图中的几棵二叉树: a                      a                         a                        a /               

HDU Tickets(简单的dp递推)

Tickets Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 972    Accepted Submission(s): 495 Problem Description Jesus, what a great movie! Thousands of people are rushing to the cinema. However,