用递归实现一元钱的兑换方案

xingchen0906 2015-04-15 10:17:39
#include<stdio.h>
#include<stdlib.h>

void main()
{


//for循环实现
int i, j, k;
for (i = 0; i <= 10;i++)
for (j = 0; j <= 5;j++)
for (k = 0; k <= 2;k++)
if (i + j * 2 + k * 5 == 10)
printf("%d个1毛,%d个2毛,%d个5毛\n", i, j, k);


//while循环实现
//int i = 0, j = 0, k = 0;

//while (i <= 10)
//{
//
// while (j <= 5)
// {
// while (k <= 2)
// {
// if (i + j * 2 + k * 5 == 10)
// printf("%d个1毛,%d个2毛,%d个5毛\n", i, j, k);

// k++;
// }
// k = 0;
// j++;
// }
// k = 0;
// j = 0;
// i++;

//
//}

//do...while实现循环
//int i = 0;
//int j = 0;
//int k = 0;
//do
//{
// do
// {
// do
// {
// if (i + j * 2 + k * 5 == 10)
// printf("%d个1毛,%d个2毛,%d个5毛\n", i, j, k);

// } while (++k <= 2);

// k = 0;

// } while (++j <= 5);

// j = 0;
//
//} while (++i <= 10);







system("pause");
}



上面是用三种循环实现的 用递归怎么解决 谢谢了
...全文
101 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xmxqiyan 2015-04-15
  • 打赏
  • 举报
回复

int i=0,j=0,k=0;

void fun()
{
	int sum = 0;


	sum = i + j*2 + k*5;
	if (sum == 10)
	{
		printf("%d个1角,%d个2角,%d个5角。\r\n", i, j, k);
	}

	i ++;
	if (sum >= 10)
	{
		if (i > 10)
		{
			i = 0;
			j ++;
			if (j > 5)
			{
				j = 0;
				k++;
				if (k > 2)
				{
					return;
				}
			}
		}
	}
	
	fun();

}

xingchen0906 2015-04-15
  • 打赏
  • 举报
回复
引用 1 楼 focuslight 的回复:
void func() { int i=0; int j=0; int k=0; if (i + j * 2 + k * 5 == 10) printf("%d个1毛,%d个2毛,%d个5毛\n", i, j, k); else func(); }
不行啊 好像溢出了
Isnis-fallen 2015-04-15
  • 打赏
  • 举报
回复
void func() { int i=0; int j=0; int k=0; if (i + j * 2 + k * 5 == 10) printf("%d个1毛,%d个2毛,%d个5毛\n", i, j, k); else func(); }

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧