Chạy ❯
Nhận trang web của
riêng
bạn
×
Thay đổi định hướng
Thay đổi chủ đề, Tối/Sáng
Đi tới Không gian
Python
C
Java
tính toán_count = 0 def F(n): tính toán toàn cầu tính toán_count += 1 if n <= 1: return n else: return F(n - 1) + F(n - 2) tính toán_count_mem = 0 def F_mem(n): if memo [n] != Không có: # Đã tính toán return memo[n] else: # Cần tính toán tính toán toàn cục_count_mem tính toán_count_mem += 1 if n <= 1: memo[n] = n else: memo[n] = F_mem(n - 1 ) + F_mem(n - 2) return memo[n] print('F(30) = ',F(30)) print(f'Số lần tính toán: {computation_count}') print('\nSử dụng tính năng ghi nhớ:') memo = [None]*31 print('F(30) = ',F_mem(30)) print(f'Số lượng tính toán có ghi nhớ: {computation_count_mem}') #Python
#include <stdio.h> int tính toánCount = 0; tính toán intCountMem = 0; bản ghi nhớ int[31]; int F(int n) { tính toánCount++; if (n <= 1) { return n; } else { return F(n - 1) + F(n - 2); } } int FMem(int n) { if (memo[n] >= 0) { // Đã tính return memo[n]; } else { // Tính toán cần thiết countMem++; if (n <= 1) { memo[n] = n; } else { memo[n] = FMem(n - 1) + FMem(n - 2); } trả lại bản ghi nhớ[n]; } } int main() { for (int i = 0; i < 31; i++) { memo[i] = -1; // Khởi tạo mảng ghi nhớ với -1 để biểu thị chưa được tính toán } printf("F(30) = %d\n", F(30)); printf("Số lần tính toán: %d\n\nSử dụng tính năng ghi nhớ:\n", tính toán); printf("F(30) = %d\n", FMem(30)); printf("Số phép tính có ghi nhớ: %d\n", tính toánCountMem); trả về 0; } //C
lớp công khai Chính { tính toán int tĩnh riêng tưCount = 0; tính toán int tĩnh riêngCountMem = 0; riêng tư Số nguyên tĩnh[] memo = Số nguyên mới[31]; public static void main(String[] args) { System.out.println("F(30) = " + F(30)); System.out.println("Số lần tính toán: " + Đếm tính toán); System.out.println("\nSử dụng tính năng ghi nhớ:"); System.out.println("F(30) = " + FMem(30)); System.out.println("Số phép tính có ghi nhớ: " + CalculateCountMem); } public static int F(int n) { tính toánCount++; if (n <= 1) { return n; } else { return F(n - 1) + F(n - 2); } } public static int FMem(int n) { if (memo[n] != null) { // Đã tính return memo[n]; } else { // Tính toán cần thiết countMem++; if (n <= 1) { memo[n] = n; } else { memo[n] = FMem(n - 1) + FMem(n - 2); } trả lại bản ghi nhớ[n]; } } } //Java
Kết quả Python:
Kết quả C:
Kết quả Java:
F(30) = 832040
Số lần tính toán: 2692537
Sử dụng ghi nhớ:
F(30) = 832040
Số lần tính toán có ghi nhớ: 31
F(30) = 832040
Số lần tính toán: 2692537
Sử dụng ghi nhớ:
F(30) = 832040
Số lần tính toán có ghi nhớ: 31
F(30) = 832040
Số lần tính toán: 2692537
Sử dụng ghi nhớ:
F(30) = 832040
Số lần tính toán có ghi nhớ: 31