这题用设计递归函数怎么做啊?
问题描述:
一箱苹果,4个4个数余1个,5个 5个数余2个,9个9个数余7个,对应1,5,9的情说分别设计递归函数,求解如果一箱中最多可以装下2000个苹果果,则该箱子中可能的苹果数有几个,分别是多少?
答
#include<stdio.h>
int main()
{
int apple4(int i);
int apple5(int i);
int apple9(int i);
int i;
printf("4个4个数余1个的苹果数可能为:\n");
for(i=1;apple4(i)<2000;i++)
{
printf("%d\t",apple4(i));
}
printf("\n");
printf("5个5个数余2个的苹果数可能为:\n");
for(i=1;apple5(i)<2000;i++)
{
printf("%d\t",apple5(i));
}
printf("\n");
printf("9个9个数余7个的苹果数可能为:\n");
for(i=1;apple9(i)<2000;i++)
{
printf("%d\t",apple9(i));
}
printf("\n");
}
apple4(int i)
{
if(1==i)
return 5;
else
return apple4(i-1)+4;
}
apple5(int i)
{
if(1==i)
return 7;
else
return apple5(i-1)+5;
}
apple9(int i)
{
if(1==i)
return 16;
else
return apple9(i-1)+9;
}
答
代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h>
//n是最多存放的个数,m是4/7
void fun(int n,int m,int k)
{
if(n < (m+k))
return;
else if (n == (m+k) )
{
printf("%d ",n);
}else
{
while(n%m !=k && n>= (m+k))
n--;
printf("%d ",n);
fun(n-m,m,k);
}
}
void main()
{
int nmb = 2000;
printf("4个4个数余1的情况:\n");
fun(nmb,4,1);
printf("\n5个5个数余2的情况:\n");
fun(nmb,5,2);
printf("\n9个9个数余7的情况:\n");
fun(nmb,9,7);
return;
}