Ngôn ngữ lập trình C, được biên dịch bằng gcc, bash terminal trong WSL
Tôi đã viết một hàm đệ quy, để tìm số thấp nhất trong một mảng, hoạt động tốt.
/*01*/ int minimo(int array[], int n)
/*02*/ {
/*03*/ static int min = 0;
/*04*/
/*05*/ if (n == N)
/*06*/ {
/*07*/ return array[n-1];
/*08*/ }
/*09*/ else
/*10*/ {
/*11*/ min = minimo(array, n+1);
/*12*/ if(array[n]<min){
/*13*/ min = array[n];
/*14*/ }
/*15*/ }
/*16*/ }
Vấn đề duy nhất là nó không hoạt động, vì nó không trả lại "min" cho người gọi ...
int main()
{
//Var
int array[N] = {10, 2, 5, 1, 7};
printf("Min: %d\n", minimo(array, 0));
}
Mối quan tâm của tôi thực sự là một vấn đề, nhưng không phải trên máy của tôi mà chức năng hoạt động tốt như nó vốn có; đó là một vấn đề trên máy tính xách tay và IDE của bạn bè tôi, tôi đã thử sao chép vào XCode trên Macbook của một người bạn và nó sẽ không hoạt động nếu dòng "return min;" không được thêm vào cuối chức năng.
Giữa dòng 15-16 tôi phải thêm return min;
/*15*/ }
return min;
/*16*/ }
Câu hỏi của tôi cho bạn là như sau:
- Làm thế nào một hàm có thể trả về một biến tự động ?
- Có thể là nó trả về biến duy nhất mà tôi đã tạo (static int min) không?
- Hay đó là một "vấn đề" liên quan đến thuộc tính tĩnh mà biến có?
- Nó có liên quan gì đến bản chất của hàm ( đệ quy ) không?
Đây là bài viết đầu tiên của tôi, xin vui lòng tử tế nếu tôi vi phạm bất kỳ quy tắc diễn đàn nào.
main
nó là về giá trị trả về "tự động" của một hàm trong một triển khai cụ thể.
C
tiêu chuẩn cụ thể trả về 0 trong sự vắng mặt của một tuyên bố trả lại.
-Wall
công tắc và xem trình biên dịch cho bạn biết điều gì.
main
chức năng của bạn trở lại.