Viết hàm và thủ tục đệ quy bài toán tìm kiếm nhị phân
Viết hàm và thủ tục đệ quy bài toán tìm kiếm nhị phân
Code:{Tim kiem nhi phan bang de quy} Type mang=array[1..100] of integer; Var i,N,dau,cuoi,k:integer; A:mang; procedure tknp(Var A:mang;dau,cuoi,k:integer); Var giua:integer; Begin giua:=(dau+cuoi) div 2; IF A[giua]=k then Begin write('chi so',giua); Readln; Exit; End; If dau>cuoi then Begin write('Khong tim thay'); Exit; End; if A[giua]>k then cuoi:=giua-1 else dau:=giua+1; tknp(A,dau,cuoi,k); End; BEGIN write('Nhap vao so nguyen duong N:');Readln(N); For i:=1 to N do Begin write('A[',i,']='); Readln(A[i]); End; dau:=1;cuoi:=N; write('Nhap vao so k:'); Readln(k); tknp(A,dau,cuoi,k); Readln End.
Code:{hàm đệ quy tìm kiếm nhị phân} {Tim kiem nhi phan bang de quy} {Tim kiem nhi phan bang de quy} Type mang=array[1..100] of integer; Var t,i,N,dau,cuoi,k,cs:integer; A:mang; function tknp(A:mang;dau,cuoi,k:integer):Integer; Var giua:integer; Begin giua:=(dau+cuoi) div 2; IF A[giua]=k then Begin tknp:=giua; Exit; End; If dau>cuoi then Begin tknp:=0; Exit; End; if A[giua]>k then cuoi:=giua-1 else dau:=giua+1; tknp:=tknp(A,dau,cuoi,k); End; BEGIN write('Nhap vao so nguyen duong N:');Readln(N); For i:=1 to N do Begin write('A[',i,']='); Readln(A[i]); End; dau:=1;cuoi:=N; write('Nhap vao so k:'); Readln(k); t:=tknp(A,dau,cuoi,k); If t=0 then write('Khong tim thay') else write('chi so:',t); Readln End.
Bookmarks