Na verdade não existe "a melhor", mas sim "a mais simples" para resolver seu problema.
Aqui usamos tmb uma função, pois é mais simples na hora de incluir um novo menu, pois colocamos no skip dele:
acesso("3,3,10")
Assim, o sistema verifica se ele tem acesso ao 3o Menu, na 3a opcao, na 10a opcao.
Fazendo assim o trabalho de criar ramificação de menus muito mais simples (pelo menos para nós).
Posso complementar tmb, que muitas vezes nos atemos a eficiencia máxima, mas que na verdade não causa um milessimo de segundo de atraso na aplicação. Então a pergunta: Será que vale a pena gastar tanto tempo realizando um processo teoricamente melhor, mas que na prática é tão eficiente quanto outro processo, que academicamente está menos eficiente?
Cordialmente,
Fabiano Costa