Mặc dù tôi nghĩ rằng Martijn Pieters trả lời giải quyết vấn đề chính trong câu trả lời của anh ấy (bạn cần quay lại từ trường hợp đệ quy), tôi không nghĩ rằng mã được đề xuất của anh ấy sẽ hoạt động đúng. Show Bạn đang cố gắng thực hiện một tìm kiếm chiều sâu đầu tiên cho giá trị 0 trong 1 Dict lồng nhau. Nhưng mã hiện tại của bạn không xử lý chính xác trường hợp đệ quy. Nó cần phải trả lời một cách thích hợp nếu kết quả được tìm thấy trong một trong các cuộc gọi đệ quy của nó hoặc nếu cuộc gọi đệ quy không tìm thấy mục tiêu.Đây là những gì tôi nghĩ bạn cần, với một số điều được đổi tên hoặc sắp xếp lại cho sự rõ ràng:
Ví dụ sử dụng:
Nếu bạn không muốn tăng các ngoại lệ khi không tìm thấy tệp, bạn cũng có thể trả về giá trị sentinel như 2 thay cho dòng cuối cùng và kiểm tra giá trị sentinel trong trường hợp đệ quy thay vì ________ 13/________ 14: Câu trả lời được đề xuất
Nhảy để đăng
Nhảy để đăng Bạn phải trả về giá trị từ hàm đệ quy.
EDIT: Xin lỗi, đã kiểm tra nó trong khi nó đã được trả lời. 1,391 Programming Explorer
Team Colleague Nhìn vào chức năng của bạn, khi độ sâu> 0, nó thực thi hàm (độ sâu -1), nhưng nó không trả về không có gì (do đó không có). Bạn phải viết
Tất cả 5 câu trả lời Bạn phải trả về giá trị từ hàm đệ quy.
EDIT: Xin lỗi, đã kiểm tra nó trong khi nó đã được trả lời. Tất cả 5 câu trả lời
Tất cả 5 câu trả lời GRIBOUILLIS1.391 LUẬT SƯ
Tất cả 5 câu trả lời GRIBOUILLIS1.391 LUẬT SƯ
12 năm trước
Đã chỉnh sửa 12 năm trước bởi beat_slayer vì: n/a Cảm ơn, nó đã làm việc. Bây giờ tôi đang cố gắng để hiểu tại sao nó lại xảy ra. Có phải vì lần đầu tiên nó thực thi hàm (), không có câu lệnh trả về để nó hoàn thành thực thi hàm và trả về giá trị trả về mặc định của không?
Bạn chỉ cần xem mã: Khi bạn gọi hàm, đối số được truyền lại là gì? Bạn có thể nghĩ về mỗi lời cầu khẩn (dù được gọi từ 'bên ngoài' hoặc từ 'bên trong') như một chức năng riêng biệt. Đây là chức năng:
Vì vậy, chuỗi gọi trông giống như Vì vậy, bạn có thể thấy rằng đối với chức năng này, bạn luôn nhận được 10 bất kể đối số không âm nào bạn chuyển đến. Các chức năng đệ quy thú vị hơn làm một cái gì đó ... thú vị hơn. Ví dụ, một trong các chức năng đệ quy chính tắc là Factorial: Tại sao một hàm đệ quy trở lại không?OP có chức năng đệ quy, trong đó các cuộc gọi đệ quy bỏ lỡ sự trở lại.Do đó, nó đánh giá là không ai bất cứ khi nào nó đệ quy.the recursive calls misses a return . It thus evaluates to None whenever it recurses.
Tại sao chức năng Python của tôi không trả lại?Nguồn phổ biến nhất của không có giá trị là: có một hàm không trả về bất cứ điều gì (trả về không ngầm định).Cài đặt rõ ràng một biến thành không.Gán một biến cho kết quả gọi chức năng tích hợp không trả về bất cứ điều gì.Having a function that doesn't return anything (returns None implicitly). Explicitly setting a variable to None . Assigning a variable to the result of calling a built-in function that doesn't return anything.
Bạn có thể làm đệ quy mà không trở lại?Trong trường hợp đệ quy, người gọi ngay lập tức này có thể là một lời cầu khẩn khác của cùng chức năng đó.Trong hầu hết các ngôn ngữ, nếu bạn không sử dụng giá trị trả về của hàm bạn gọi là (đệ quy hay không), hoặc giá trị trả về đó sẽ bị loại bỏ hoặc đó là một lỗi có thể chẩn đoán được.if you don't use the return value of a function you called (recursively or not), either that return value gets discarded or it is a diagnosable error.
Làm thế nào để bạn dừng một chức năng đệ quy trong Python?Một cách để thoát ra khỏi một chức năng đệ quy trong Python là ném một ngoại lệ và bắt được điều đó ở cấp cao nhất.Một số người sẽ nói rằng đây không phải là cách đúng đắn để suy nghĩ về đệ quy, nhưng nó hoàn thành công việc.throw an exception and catch that at the top level. Some people will say that this is not the right way to think about recursion, but it gets the job done. |