两倒编程题,找人帮我做一下

来源:百度知道 编辑:UC知道 时间:2024/07/08 17:45:11
1.写一个函数,输出规定的数字组合。

void comb(n,r),n表示自然数,r表示小于n的一个自然数。

如comb(5,3)为: 543,542,541,532,531,521,432,431,421,321.

数字前后顺序无关,即只求组合,543和534看做相同的。

用递归写出此函数。

2.有n个球,每次取出其中一半加一个,如10个球,第一次取出6个,第二次取出3个。

问:取出10次后,正好剩余1个球。编程求最初的球的数量。

1题
#include<stdio.h>
int i,j; //i控制个位,j控制十位
void con(int m,int n)
{
if(i>=n-2)//如果你要的是个位到1的话,把这句改为if(i>=1)
{

printf("%5d",m*100+j*10+i);
i--;
con(m,n);
}
else
if(j>n-2) //如果你要的是个位到1的话,把这句改为if(j>1)
{j--;i=j-1;
printf("\n");//可以在这加上一个语句,使你看到运行的情况.你可以不要
con(m,n);}
else
{ m=m-1;i=m-2;j=m-1;con(m,n);}
}
main()
{
int m,n;
printf("Please insert the value of M and N(m>n):");//输入M,N的值
scanf("%d%d",&m,&n);
i=m-2;j=m-1;
con(m,n);
printf("\n");
}
2题
#include <stdio.h>
int main()
{
int num=1,i;
for (i = 0; i < 10; i++)
{
printf("%2d %2d\n", i , num);
num=(num+1)*2;
}
return 0;
}

第一题我的思路不是递归,用递归做就不太清楚了

第二题的递归方程是 T(i+1)=2(T(i)+