Hướng dẫn recursive algorithm for converting decimal to any base python - thuật toán đệ quy để chuyển đổi số thập phân thành bất kỳ python cơ sở nào

Tôi khuyên bạn nên cấu trúc mã của bạn một cách chính xác hơn. Bạn có thể phân chia nhiệm vụ được chỉ định một cách mơ hồ mà bạn đề cập theo các nhiệm vụ phụ khác nhau, ví dụ:

  • Xác định và bình thường hóa các dấu hiệu của số và cơ sở [bạn cần hỗ trợ các cơ sở tiêu cực hoặc bạn có thể chỉ tăng một ngoại lệ?], Cũng đảm bảo một ngoại lệ ngay lập tức được nêu ra trong các trường hợp lỗi [ví dụ: cơ sở 0 hoặc 1];
  • Viết một hàm [đưa ra các giá trị tích cực và chính xác cho ab] trả về một "chuỗi chữ số" để biểu thị a trong cơ sở b, trong đó "chữ số" là một số nguyên giữa 0 bao gồm và b được loại trừ;
  • Viết một hàm đưa ra dấu hiệu và trình tự mở rộng của các chữ số được xây dựng và trả về một biểu diễn chuỗi-tùy thuộc vào cách bạn muốn biểu diễn "chữ số" rất lớn khi B lớn, giả sử> 36 Nếu bạn muốn sử dụng các chữ số Các chữ cái ASCII, cho 36 chữ số đầu tiên theo cách rõ ràng; Có lẽ bạn nên chấp nhận chuỗi "bảng chữ cái" để sử dụng cho mục đích [và hàm đầu tiên ở trên sẽ tăng ngoại lệ khi B quá lớn cho bảng chữ cái đã cho]
  • Viết một chức năng sử dụng tất cả những cái trên để in chuỗi ra

Trong số các nhiệm vụ này, chỉ có nhiệm vụ thứ hai có thể được coi là phù hợp với việc thực hiện "đệ quy" nếu một người khăng khăng [mặc dù việc thực hiện lặp đi lặp lại trên thực tế là tự nhiên hơn nhiều!] - cho rằng đây là bài tập về nhà, tôi đoán bạn sẽ phải Làm điều đó một cách đệ quy vì đó là một phần của nhiệm vụ được giao, À!-]. Nhưng, để tham khảo, một cách rõ ràng để lặp lại sẽ là:

  def digitsequence[a, b]:
    results = []
    while True:
      results.append[a % b]
      if a < b: break
      a //= b
    return reversed[results]

Giả sử một người muốn chuỗi chữ số theo thứ tự "endian lớn" mà chúng ta đã sử dụng từ cách ký hiệu thập phân vị trí đi vào văn hóa phương Tây [đó là thứ tự nhỏ tính hơn tự nhiên hơn trong bản gốc tiếng Ả Rập ... nhưng tiếng Ả Rập được viết Phải sang trái, phiên âm theo nghĩa đen của trật tự đó bằng các ngôn ngữ châu Âu, được viết từ trái sang phải, đã trở thành Big-endian!-].

Dù sao, bạn có thể nhận đệ quy đơn giản, tuyến tính như một cách để "đảo ngược" mọi thứ ngầm [bạn có thể nói đệ quy như vậy "ẩn" một ngăn xếp cuối cùng, đầu tiên, rõ ràng là một cách để đảo ngược một chuỗi ;-], mà tôi đoán là nơi thông số kỹ thuật đệ quy trong bài tập về nhà có thể đến từ ;-].

Bài đăng này liên quan đến các phương thức để liên kết thập phân với bất kỳ số hệ thống cơ sở nào vào bất kỳ cơ sở nào tùy thuộc vào đầu vào của người dùng trong Python.

Điều kiện tiên quyết: Những điều cơ bản của các cấu trúc vòng Python

Thập phân cho bất kỳ cơ sở nào - phương pháp

Thuật toán cơ bản cho chuyển đổi này là chia liên tục [phân chia số nguyên] Số thập phân đã cho cho giá trị cơ sở đích cho đến khi số thập phân trở thành 0. Tuy nhiên, phần còn lại trong mỗi trường hợp tạo thành các chữ số của số trong hệ thống cơ sở mới, tuy nhiên, trong thứ tự ngược lại.

Một giới hạn trên

Thuật toán nói chung sẽ hoạt động cho bất kỳ cơ sở nào, nhưng chúng tôi cần các chữ số/ký tự để biểu thị nhiều số của một hệ thống cơ sở. Để đơn giản, chúng tôi giới hạn bản thân ở cơ sở 36 tức là 10 số + 26 bảng chữ cái. [Chúng tôi có thể phân biệt trường hợp thấp hơn và trên, nhưng chúng tôi dự định tập trung vào thuật toán ở đây!]. Sẽ rõ ràng sau khi thực hiện rằng phương pháp phải hoạt động cho bất kỳ cơ sở nào.

Số thập phân cho bất kỳ cơ sở nào - thực hiện Python

Xem xét chương trình sau,

def dec_to_base[num,base]:  #Maximum base - 36
    base_num = ""
    while num>0:
        dig = int[num%base]
        if dig

Bài Viết Liên Quan

Chủ Đề