1. В программе не нужно вызывать pot в цикле - зачем? Вызовите её 1 раз для первого элемента.
2. Если очередной элемент равен нулю, то нужно pot приравнивать не к 1, а к рекурсивному вызову функции (как в следующей строке, только без множителя a[i]).
3. Определитесь, как Вы будете идти по массиву: от начала к концу, или от конца к началу. В первом случае изначально нужно вызывать pos для первого элемента, а в ней вызывать p(i+1,a). Если от конца к началу - тогда, соответственно, всё наоборот.
4. В функции pos нужно проверять, что каждый раз индекс не выходит за границы массива.