| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2545 人关注过本帖
标题:递归函数
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 10楼 y529879803
oh,这个我要想想才行,上面那个是我n个月前编的,在我的代码原基础上弄多个循环嵌套就行了~

相当于N=1,2,3,4,5……这样的循环,诶,最近懒敲代码了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-14 14:35
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10570
专家分:43038
注 册:2014-5-20
收藏
得分:0 
回复 9楼 九转星河
这个可以,相当于N进制,逢N进1,高位0补齐。
2017-01-14 14:44
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10570
专家分:43038
注 册:2014-5-20
收藏
得分:0 
回复 6楼 y529879803
明白,不只是全排,还要求“可重复使用元素”。
2017-01-14 14:48
y529879803
Rank: 1
等 级:等待验证会员
帖 子:65
专家分:7
注 册:2016-11-10
收藏
得分:0 
1楼我自己的那个现在限制了排位的位数是3,但是可以输入各种不同的符号(<129个不同符号)包括空格,产生的结果是输入元素数的三次方,并且会显示在界面上同时做出.dat记录产生的结果。。。。。。我用递归能控制次数,但是结果不对

碧蓝航线真好玩
2017-01-14 14:50
y529879803
Rank: 1
等 级:等待验证会员
帖 子:65
专家分:7
注 册:2016-11-10
收藏
得分:0 
dalao们,我有个思路就是我把一位二位三位四位五位六位七位八位的循环先自己写好,然后根据输入的位数执行。。。用多态代替判断和递归。。。虽然写起来麻烦但是能用。而且有上限。。。。。。不过还是想知道第一页最后一贴的那玩意的做法。

碧蓝航线真好玩
2017-01-14 18:30
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:633
专家分:3045
注 册:2011-4-22
收藏
得分:0 
回复 10楼 y529879803
你这个题目说得不清楚,原来不是数学意义上的全排列。先排序再循环,是比较方便的思路。
2017-01-14 18:44
y529879803
Rank: 1
等 级:等待验证会员
帖 子:65
专家分:7
注 册:2016-11-10
收藏
得分:0 
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
main()
{
FILE *p;
int a,e,h,g,i,d,f,j,k,l,m,n,o,q,r,s,t;
char b[129];
char c;
p=fopen ("d:\\pailie.dat","w+");
printf("输入排列位数\n");
scanf("%d",&a);//a为排列位数
printf("\n");
c=getchar();//字符c吸收回车符,不然就必须先输入字符串再输入数字
if (a>8||a<1){
printf("只有1到8位的情况");
return 0;}
printf("输入可能组成排列的数字字母和符号,要求不重复输入并且不以空格分隔(空格是符号)\n");
gets (b);//b这个字符串为可能构成排列的数字字母和符号,129是ascii字符集的127(从0到127)加2个
printf("\n");
e=strlen (b);//e为可能构成排列的数字字母和符号的个数
if (a==3)
{
for(h=0;h<e;h++)
{   
for(g=0;g<e;g++)
{
for(i=0;i<e;i++)
{        
putchar (b[h]);
fputc (b[h],p);
putchar(b[g]);
fputc (b[g],p);
putchar (b[i]);
fputc (b[i],p);
printf("\n");
fputc ('\n',p);
}
}
}
}
if (a==2)
{
for(h=0;h<e;h++)
{
for(g=0;g<e;g++)
{
putchar (b[h]);
fputc (b[h],p);
putchar(b[g]);
fputc (b[g],p);
printf("\n");
fputc ('\n',p);
}
}
}
if (a==1)
{
for(h=0;h<e;h++)
{
putchar (b[h]);
fputc (b[h],p);
printf("\n");
fputc ('\n',p);
}
}
if (a==4)
{
for(h=0;h<e;h++)
{   
for(g=0;g<e;g++)
{
for(i=0;i<e;i++)
{
for(d=0;d<e;d++)
{        
putchar (b[h]);
fputc (b[h],p);
putchar(b[g]);
fputc (b[g],p);
putchar (b[i]);
fputc (b[i],p);
putchar (b[d]);
fputc (b[d],p);
printf("\n");
fputc ('\n',p);
}
}
}
}
}
if (a==5)
{
for(h=0;h<e;h++)
{   
for(g=0;g<e;g++)
{
for(i=0;i<e;i++)
{
for(d=0;d<e;d++)
{
for(f=0;f<e;f++)
{
putchar (b[h]);
fputc (b[h],p);
putchar(b[g]);
fputc (b[g],p);
putchar (b[i]);
fputc (b[i],p);
putchar (b[d]);
fputc (b[d],p);
putchar (b[f]);
fputc (b[f],p);
printf("\n");
fputc ('\n',p);
}
}
}
}
}
}
if (a==6)
{
for(h=0;h<e;h++)
{   
for(g=0;g<e;g++)
{
for(i=0;i<e;i++)
{
for(d=0;d<e;d++)
{
for(f=0;f<e;f++)
{
for(j=0;j<e;j++)
{
putchar (b[h]);
fputc (b[h],p);
putchar(b[g]);
fputc (b[g],p);
putchar (b[i]);
fputc (b[i],p);
putchar (b[d]);
fputc (b[d],p);
putchar (b[f]);
fputc (b[f],p);
putchar (b[j]);
fputc (b[j],p);
printf("\n");
fputc ('\n',p);
}
}
}
}
}
}
}
if (a==7)
{
for(h=0;h<e;h++)
{   
for(g=0;g<e;g++)
{
for(i=0;i<e;i++)
{
for(d=0;d<e;d++)
{
for(f=0;f<e;f++)
{
for(j=0;j<e;j++)
{
for(k=0;k<e;k++)
{
putchar (b[h]);
fputc (b[h],p);
putchar(b[g]);
fputc (b[g],p);
putchar (b[i]);
fputc (b[i],p);
putchar (b[d]);
fputc (b[d],p);
putchar (b[f]);
fputc (b[f],p);
putchar (b[j]);
fputc (b[j],p);
putchar (b[k]);
fputc (b[k],p);
printf("\n");
fputc ('\n',p);
}
}
}
}
}
}
}
}
if (a==8)
{
for(h=0;h<e;h++)
{   
for(g=0;g<e;g++)
{
for(i=0;i<e;i++)
{
for(d=0;d<e;d++)
{
for(f=0;f<e;f++)
{
for(j=0;j<e;j++)
{
for(k=0;k<e;k++)
{
for(l=0;l<e;l++)
{
putchar (b[h]);
fputc (b[h],p);
putchar(b[g]);
fputc (b[g],p);
putchar (b[i]);
fputc (b[i],p);
putchar (b[d]);
fputc (b[d],p);
putchar (b[f]);
fputc (b[f],p);
putchar (b[j]);
fputc (b[j],p);
putchar (b[k]);
fputc (b[k],p);
putchar (b[l]);
fputc (b[l],p);
printf("\n");
fputc ('\n',p);
}
}
}
}
}
}
}
}
}








}
结果做成这样了。。。虽然可以用但是感觉不好呀。。。。。。有种输掉什么的感觉

碧蓝航线真好玩
2017-01-14 19:13
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
把这个代码的数值换成ASCII码是不是会感觉好一点~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-14 19:29
y529879803
Rank: 1
等 级:等待验证会员
帖 子:65
专家分:7
注 册:2016-11-10
收藏
得分:0 
回复 18楼 九转星河
排列元素b就是字符型。。。你指a吗?a换成字符?

碧蓝航线真好玩
2017-01-14 19:55
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 19楼 y529879803
这个代码可以,就是看循环嵌套多了一点……~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-14 21:56
快速回复:递归函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012831 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved