这题用设计递归函数怎么做啊?

这题用设计递归函数怎么做啊?

问题描述:

一箱苹果,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;
}