
递归函数是直接或间接调用自身的函数. 它的两个元素是边界条件和递归方程. 递归函数的两个简单示例是斐波那契数列: F(n)= F(n-1)+ f(n-2);或正整数的阶乘: f(n)= n * f(n-1). 这两个示例都可以轻松编写其递归公式. 但是,并非所有函数都具有简单的一元递归算法. 这是一个示例:
求正整数除以正整数n的数量,即满足n = n1 + n2 + ... + nk,其中n1> = n2> = n3> = ...> = nK> = 1.
不能简单地使用一元递归q(n)计算此示例. 需要使用二进制递归q(n,m): 表示满足最大除法数的除法数,即n1 <= m. C ++程序如下(Dev-C ++):
#include

使用命名空间标准;
//找到一个正整数的除数
int xyz(int n,int m)
{

如果(n == 1 | m == 1)返回1;
如果(m> = n)返回1 + xyz(n,n-1);
如果(m1)返回xyz(n递归函数例子,m-1)+ xyz(n-m,m);
} //递归函数xyz(n递归函数例子,m)表示满足n的除法数,其最大数不大于m

int main()
{int n;
cout <<“输入一个正整数: ”;
cin >> n;

cout << xyz(n,n)<< endl;
系统(“暂停”);
返回0;
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-166959-1.html
应该清醒清醒
谁信啊