Като цяло ми харесаха решенията, надявам се задачата да е била лесна.

Тъй като няма много възможности за решаване на задачата, грешките и дребните проблеми се свеждат до няколко основни, затова реших да напиша обща рецензия, а всеки да си познае кое се отнася за него:

- когато се смята сума за j=1,3,5,...m, трябва да се започне от 1 и да се увеличава брояча с 2. Коректен резултат ще се получи и ако се направи проверка за четност на m и да се започне от нечетна стойност надолу.

- когато имаме вложена дефиниция на функция, няма нужда да повтаряме параметрите на външната, например при итеративен процес:
(define (f n m x)
(define (iter i n res)
...) ...)
няма нужда iter да има параметър n, ако той винаги е равен на едноименния аргумент на f. Функцията iter има достъп до всичките параметри на f.

- когато пишем на Scheme изрази от вида f(i)*x^2, може да напишем (* (f i) x x) вместо (* (f i) (* x x)), спестявайки малко писане. Естествено, това не е грешка, просто съвет.

- 1-2 решения зациклиха - проверявайте добре крайните случаи. В едно домашно даже имаше 6 тестови примера, което доста улесни проверяването, за съжаление при друг вход - (sum 2 2 2) не можа да завърши...

- в едно домашно беше изпуснато тялото на функцията, т.е. имаше две вложени дефиниции на функции edno и dve, но нямаше извикване на dve след тях. Имаше и други грешки там - извикване на функция в стил dve(...), а не (dve ...), крайното условие не беше добро...

- по принцип задачата може да се реши на малко редове, гледайте да няма много повтарящ се код, особено като има компютър пред вас.

Успех!
Last modified: Saturday, 12 November 2011, 5:38 PM