将表示为系数列表的多项式转换为字符串

时间:2016-11-13 01:32:08

标签: functional-programming scheme racket polynomials

我知道这是一个新的问题。我正在尝试创建一个函数'displayPoly'来显示方案中的多项式。例如,给出的列表为 '(2 0 1 5.1 8)应显示2x ^ 4 + x ^ 2 + 5.1x + 8。

我已将“学位”定义如下:

 (define degree
 (lambda(list)
  (if (null? list) 
      (- 1)
  (+ 1  (degree (cdr list))))))

请注意我严格限于基本方案功能 •define,lambda,if,cond,cons,car,cdr,list,member,list-ref •谓词:null?清单?等于?串?数?会员? •算术运算符,关系运算符,逻辑运算符 •sort,map,filter,foldr,foldl,length,reverse,append,last,let,let *,letrec,print,begin,newline,display,expt,string-append,reduce,range

1 个答案:

答案 0 :(得分:0)

您需要编写一些辅助函数。

  1. 编写一个给定多项式的函数,返回一个度数列表。

    输入:'(2 0 1 5.1 8) 输出:(4 3 2 1 0)

  2. 写一个给定系数和度数的函数mono输出一个单项式作为字符串。

    输入:2 4 输出:“2x ^ 4”

  3. 使用(map mono '(2 0 1 5.1 8) (4 3 2 1 0))生成单项式列表。

  4. 使用add-between(或自己写一个)在所有单项式之间添加“+”。

  5. 使用(apply string-append your-list-of-monomials)获取最终字符串。

  6. 注意:可以产生更漂亮的输出,但这是一个良好的开端。