Si vous pouviez m'aider avec TOUTE partie de cette question, je l'apprécierais. Merci.Arborescence récursive/complexité temporelle Affectation de schéma
2^0 = 1
2^N = 2^(N-1) + 2^(N-1)
Convertir cette définition en une fonction récursive arbre exactement équivalent appelé deux à la puissance de. Décrivez sa complexité temporelle asymptotique et expliquez pourquoi elle a cette complexité de temps.
Maintenant, écrivez une fonction appelée tttpo_rec qui calcule exactement la même chose, mais qui utilise un processus récursif linéaire qui a une complexité de temps O (n) et utilise également l'espace O (n) pour ses opérations en attente.
Maintenant, écrivez une fonction appelée tttpo_iter qui calcule exactement la même chose, mais qui utilise un processus itératif linéaire qui a une complexité de temps O (n) et utilise également un espace constant. Supposons maintenant que vous vouliez généraliser l'une des définitions précédentes afin qu'elle gère des pouvoirs entiers arbitraires, de sorte que vous puissiez calculer 2^N, 3^N, etc. Écrivez une fonction appelée to-the-power- de cela prend deux arguments et élève l'un au pouvoir de l'autre.
Voici le modèle:
;; to-the-power-of: integer integer -> integer
;; This function raises m to the power of n, returning the result.
;; m must be > 0 and n >= 0.
(define (to-the-power-of m n)
...)
(check-expect (to-the-power-of 1 0) 1) ; base case
(check-expect (to-the-power-of 2 3) 8) ; recursive case
(check-expect (to-the-power-of 3 2) 9) ; recursive case
Nous allons ajouter une restriction: vous ne pouvez pas utiliser l'opérateur *; vous ne pouvez utiliser la fonction récursive suivante pour faire multiplications:
;;; multiply: integer integer -> integer
;; This function multiplies two non-negative integers, returning the result.
;; Its time complexity is O(a).
(define (multiply a b)
...)
Exprimer la fonction et à décrire la complexité de temps et pourquoi.