Previous topic | Next topic | Ada Home Page | Index

Dual procedure recursion

Sometimes have algorithms with multiple states

Example:
p(x) =p(x-1) + q(x/2){x>1}
2{x<=1}
q(x) =q(x-3) * p(x-5){x>3}
x/3{x<=3}

This involves two recursive functions

Ada requires that things must be declared before they can be used.

Code

	-- first declare q, so p can refer to it
	function q (x: in float) return float;

	-- now define p. Full definition is possible
	function p (x: in float) return float is
	begin
		if (x<=1) then 
		 	return 2;
		end if;
		return  p(x-1) + q(x/2);
        end p;

	-- now provide full definition of q
	function q(x: in float) return float is
 	begin
		if (x<=3) then
			return x/3;
		end if;
		return q(x-3) * p(x-5);
	end q;


Previous topic | Next topic | Ada Home Page | Index
c-lokan@adfa.oz.au / 23 Feb 96