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);}
非常感謝您的幫助!