求助大神,小弟想了很久了,一个递归.
1.编写一个函数,要求产生如下所示的输出(用递归)
This is written by call number 1
This is written by call number 2
This is written by call number 3
This is written by call number 4
This is written by call number 4
This is written by call number 3
This is written by call number 2
This is written by call number 1 递归 c++
[解决办法]
# include <stdio.h>
// print space n times
void print_space(int n)
{
int i;
for (i = 0; i < n; i++)
putchar(' ');
}
// print msg with leading spaces and level
void print(const char * msg, int level)
{
print_space(level);
printf("%s ", msg);
printf("%d\n", level);
}
void foo(const char * msg, int level, int max_level)
{
print(msg, level);
if (level < max_level)
foo(msg, level + 1, max_level);
print(msg, level);
}
int main()
{
const char * MSG = "This is written by call number";
foo(MSG, 1, 4);
return 0;
}
# include <stdio.h>
void foo(const char * msg, int level, int max_level)
{
printf("%*c%s %d\n", level, ' ', msg, level);
if (level < max_level)
foo(msg, level + 1, max_level);
printf("%*c%s %d\n", level, ' ', msg, level);
}
int main()
{
const char * MSG = "This is written by call number";
foo(MSG, 1, 4);
return 0;
}
#include <stdio.h>
void do_print(const char *s, int depth)
{
int i;
for (i = 0; i < depth; i++)
putchar(' ');
printf("%s %d\n", s, depth);
}
void do_depth(const char *s, int depth)
{
if (depth == 1) do_print(s, depth);
if (depth > 1) {
do_depth(s, depth-1);
do_print(s, depth);
}
}
void do_depth2(const char *s, int depth, int limit)
{
if (depth == limit) do_print(s, depth);
if (depth < limit) {
do_depth2(s, depth+1, limit);
do_print(s, depth);
}
}
void depth_print(const char *s, int limit)
{
do_depth(s, limit);
do_depth2(s, 1, limit);
}
int main(void)
{
const char *msg = "This is written by call number";
depth_print(msg, 4);
getch();
return 0;
}
#include "stdlib.h"
void foo( int nLev, int nMaxLev )
{
if( nLev > nMaxLev )
return;
for( int i = 0; i < nLev; ++ i )
printf( " " );
printf( "This is written by call number %d", nLev );
foo( ++ nLev, nMaxLev );
printf( "This is written by call number %d", nLev );
}
void main()
{
foo( 1, 4 );
}
void print_test(int begin, int end)
{
if (begin <= end)
{
printf("%d\n", begin);
print_test(begin + 1, end);
printf("%d\n", begin);
}
}