[英]What is a recursive starter function?
我正在学习递归(使用C ++),而我的教授指的是我不熟悉的术语。 我知道普通的递归函数会自行调用(对于解决迷宫非常有用),但是递归的入门函数对我来说就没有意义,因为那不就只是调用自身并成为普通的递归函数吗? 否则如何将其定义为递归?
我认为该术语表示准备确实递归函数调用的函数。
这是一个示范节目
#include <iostream>
#include <cstring>
#include <utility>
void reverse( char *s, size_t n )
{
if ( not ( n < 2 ) )
{
std::swap( s[0], s[n-1] );
reverse( s + 1, n - 2 );
}
}
char * reverse( char *s )
{
reverse( s, std::strlen( s ) );
return s;
}
int main()
{
char s[] = "Hello";
std::cout << s << std::endl;
std::cout << reverse( s ) << std::endl;
return 0;
}
程序输出为
Hello
olleH
这里的功能
char * reverse( char *s );
是递归启动器函数。
可以使用lambda表达式重写上面的程序。
#include <iostream>
#include <cstring>
#include <utility>
#include <functional>
char * reverse( char *s )
{
std::function<void( char *, size_t )> reverse
(
[&]( char *s, size_t n )
{
if ( not ( n < 2 ) )
{
std::swap( s[0], s[n-1] );
reverse( s + 1, n - 2 );
}
}
);
reverse( s, std::strlen( s ) );
return s;
}
int main()
{
char s[] = "Hello";
std::cout << s << std::endl;
std::cout << reverse( s ) << std::endl;
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.