-----------------------------------------
变量                         表达式                 默认值     
A                         B+D+E         
B                         D/E
C                                             10
D                         E+F
E                                              5
F                                              6
----------------------------------------------
(1)设计一数据结构存储以上过程。
(2)用递归写一函数,传的参数值为变量名,返回为一值。

解决方案 »

  1.   

    我是这么想的,先拿A来说吧,他没有默认值,所以有一个表达式。所以可以这样做:<0, B+D+E>, 0代表没有默认值,后面的那个表达式可以设计为一个Integer。拿C来说,可以表示为<1, 10>。所以写到这里很清楚了,可以用map来做,当然你可以自己设计数据结构。然后把A,B...F存到一个list中,最后就是递归求值,当然了返回的值是A的值。
      

  2.   

    用树来设计,存储吧。A为根节点,C,E,F,为叶子节点。
      

  3.   

    可不可以用map存储... 
    还是一定要自己写纯算法?
      

  4.   

    我设计的是一个map,里面存个list,list第一个放表达式,第2个放默认值,如果没有,存个no进去,用的时候判断下,不过,递归函数没写出来,主要是还得算,郁闷
      

  5.   

    关注中
    试做:class  value
    {
        int flag;//标识是0 默认值还是 1 表达式
        String expression;//存储数据
    }
    设计一个map,那以变量名为键,value为值递归函数如下:int getValue(String varname)
    {
        if(map.get(varname).flag=="0")
           return Integer.parseInt(map.get(varname).expression);
        else
          { 
            if(varname.equals("A"))
              return (getValue("B")+getValue("D")+getValue("E"));
            else if(varname.equals("B"))
              return (getValue("D")/getValue("E"));
            else if(varname.equals("D"))
              return (getValue("E")+getValue("F"));
           }
    }