0
我试图扩展TinyGP软件的功能集,以包含非线性函数,如sin,cos和tan。 问题是,树的打印是通过递归完成的,打印个人,然后是函数(+, - ,*,/),然后是另一个人。所以结果就像(X2 * 2.365789)。但是,sin只有一个参数sin(x)。如何更新打印方法?如何将非线性函数包含到TinyGP中?
打印方法的源代码概述如下。
int print_indiv(char []buffer, int buffercounter) {
int a1=0, a2;
if (buffer[buffercounter] < FSET_START) {
if (buffer[buffercounter] < varnumber)
System.out.print("X"+ (buffer[buffercounter] + 1)+ " ");
else
System.out.print(x[buffer[buffercounter]]);
return(++buffercounter);
}
switch(buffer[buffercounter]) {
case ADD: System.out.print("(");
a1=print_indiv(buffer, ++buffercounter);
System.out.print(" + ");
break;
case SUB: System.out.print("(");
a1=print_indiv(buffer, ++buffercounter);
System.out.print(" - ");
break;
case MUL: System.out.print("(");
a1=print_indiv(buffer, ++buffercounter);
System.out.print(" * ");
break;
case DIV: System.out.print("(");
a1=print_indiv(buffer, ++buffercounter);
System.out.print("/");
break;
}
a2=print_indiv(buffer, a1);
System.out.print(")");
return(a2);}
非常感谢您的帮助!