1. 程式人生 > >百鍊-2694-逆波蘭表示式-C語言-遞迴

百鍊-2694-逆波蘭表示式-C語言-遞迴

一道有趣的遞迴問題。

/********************************************
**檔名:百鍊-2694
**Copyright (c) 2015-2025 OrdinaryCrazy
**建立人: OrdinaryCrazy
**日期:20170806
**描述:百鍊-2694參考答案
**版本:1.0
*********************************************/
#include <stdio.h>
#include <stdlib.h>
/********************************************
根據逆波蘭表示式的定義進行遞迴求解
當輸入一個字串時,有2種情況:
1,字串是一個數字,則使用atof(char*)函式轉化為浮點數輸出
2,字串是一個運算子,則對其後的兩個表示式進行相應的運算,輸出運算結果
還有atof函式的定義在stdlib.h裡
*********************************************/
double solve(void)
{
    char a[10];
    scanf("%s",a);
    switch(a[0])
    {
        case '+' : return solve() + solve();
        case '-' : return solve() - solve();
        case '*' : return solve() * solve();
        case '/' : return solve() / solve();
        default : return atof(a);
    }
}

int main()
{
    printf("%f\n",solve());
    return 0;
}