#include #include int walk_recur( int dist ); main() { int distance, /* how far to walk */ count_walks; /* how many ways to walk distance meters */ printf( "\nHow far to walk? " ); scanf( "%d", &distance ); if ( distance < 1 ) /* distance must be positive */ printf( "\n\n\tERROR -- distance must be positive.\n" ); else { count_walks = walk_recur( distance ); printf( "\n\n\tThe robot can walk %d meters in %d ways.\n", distance, count_walks ); } return EXIT_SUCCESS; } int walk_recur( int dist ) { /* base cases: 1 meter -- 1 way, 2 meters -- 2 ways */ if ( dist <= 2 ) return dist; /* recursive call -- walk( dist - 1 ) + walk( dist - 2 ) */ return walk_recur( dist - 1 ) + walk_recur( dist - 2 ); }