我目前正在尝试制作一个涉及升序的程序。 N代表序列的大小,K代表最大数,例如
输入:2,3
输出:6 (1,1 - 1,2 - 1,3 - 2,2 - 2,3 - 3,3)
我当前的代码输出6但是3.我知道这可能不是找到序列数量的方法。从我看来,递归中出现了问题。你能帮我找到问题并解决它吗?
#include<iostream>
using namespace std;
long long n,k,cnt=0;
long long seq(long long n, long long k, long long first){
if(n==first){
return cnt;
}
for(long long i=first;i<=k;i++){
cnt = cnt + 1;
}
return seq(n,k,first+1);
}
int main()
{
long long n,k;
cin>>n>>k;
cout<<seq(n,k,1);
return 0;
}
答案 0 :(得分:0)
此函数应该对给定的n和k
执行此操作long long seq(long long n, long long k,long long first,long long depth){
if(depth > n){
cnt = cnt + 1; // A leaf node is hit in the recursion tree
return cnt;
}
else {
for(long long i= first;i<=k;i++){
seq(n,k,i,depth+1); // Continue recursion
}
}
return cnt;
}
int main()
{
long long n,k;
cin>>n>>k;
cout<<seq(n,k,1,1);
return 0;
}
在此处运行代码:http://cpp.sh/4xr7a