算法题——递归

逆波兰表达式

  http://bailian.openjudge.cn/practice/2694/

逆波兰表达式的定义:
1) 一个数是一个逆波兰表达式,值为该数
2) "运算符 逆波兰表达式 逆波兰表达式" 是逆波兰表
达式 ,值为两个逆波兰表达式的值运算的结果

#include<iostream>
#include<cstdlib>
using namespace std;

double exp()
{
    char s[20];  //用来保存每个数值或者运算符
    cin >> s;
    switch(s[0]) {
        case '*': return exp() * exp();
        case '+': return exp() + exp();
        case '-': return exp() - exp();
        case '/': return exp() / exp();
        default: return atof(s);
    }
}


int main(){
    cout << exp() << endl;
    return 0;
}

  

上台阶

  

#include<iostream>
using namespace std;

int Stairs(int n){
    if (n < 0) {   //台阶为负数的时候,不用走
        return 0;
    }
    if (n == 0) {   //只有没有台阶的时候,只有一种走法
        return 1;
    }
    return Stairs(n-1) + Stairs(n-2);
}
int main(){
    int n;
    while (cin >> n) {
        cout << Stairs(n) << endl;
    }
    return 0;
}

  

  

例题3: 放苹果

  http://poj.org/problem?id=1664

 

posted @ 2018-08-16 00:56  寻觅beyond  阅读(214)  评论(0)    收藏  举报
返回顶部