大家帮我看看c语言的递归函数错在哪里,老是无法运行
#include //此处是数独题目,拿0代替,会有一万个答案,可以自己换题int q[9][9] = {{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},};//此函数为测试第n个格子可不可以填写check这个数字bool c(int n,int check){int row,column,n_row,n_column;row=n/9;column=n%9;n_row = row/3 * 3;n_column = column/3 * 3;//判断横行和竖列是否有重复for(int i = 0;i=81){print();return;}//给变量初始化row=n/9;column=n%9;n_row = row/3 * 3;n_column = column/3 * 3;//如果这个格子有数字了就不需要寻找答案了(题目中定死数字了)if(q[row][column]>0){d(n+1);return;}//可以填写1-9,9个数字,依次测试for(int i = 1;i<=9;i++){if(c(n,i))//如果这个数字可以填,则填写并找下一个{q[row][column] = i;d(n+1);}}q[row][column] = 0;}void main(){d();}有点看不懂你的代码,不知道是不是想记录格子状态来填写,我之前也很想写一个解数独的,查了很多资料,觉得用回溯算法比较简单易懂,而且速度也不错,你可以借鉴一下,注释应该很详细了,有不懂的追问,希望能帮到你
你的代码没有实现递归。
可以参考我修改的:
# include
int f( int n ) //计算整数的阶乘
{
int sum;
if( n == 1 )
{
sum = 1;
}
else
{
sum = n * f( n - 1 ); //递归,调用自身
}
return sum;
}
main ()
{
int n = 3;
printf( "%d! = %d
", n, f( n ) );
}
#include<stdio.h>
#include<stdlib.h>
int d(int a[],int n, int max,int min);// 注意定义
int main()
{
int a[100],n;// 多了个逗号
int i;
printf("请输入100以内的整数的个数n=");
scanf("%d",&n);
printf("\n输入数据:\n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("%d",d(a,(n-1),a[0],a[0]));// 少了括号
}
int d(int a[],int n,int max,int min)
{
if(n<0)
{
printf("%d\n",min);
return max;
}
if(n>=0)
{
if(a[n]>max)
{
max=a[n];
}
else if(min>a[n]) min=a[n];
d(a,(n-1),max,min);
}
}
int a[100],n,;
有问题。
大家帮我看看c语言的递归函数错在哪里,老是无法运行
include<stdio.h> include<stdlib.h> int d(int a[],int n, int max,int min);\/\/ 注意定义 int main(){ int a[100],n;\/\/ 多了个逗号 int i;printf("请输入100以内的整数的个数n=");scanf("%d",&n);printf("\\n输入数据:\\n");for(i=0;i<n;i++){ scanf("%d",&a[i]...
谁帮我看看这个C语言程序哪里有错误?题目:用递归调用编写计算阶乘n!的...
return是函数返回值语句,作用是返回调用该函数地方。在函数体内应该只有一个return对应函数调用的位置,而且reutrn语句后面那()里应该是要返回的表达式而不是常量,你这有两个return都是返回数值常量1从而导致错误 include <stdio.h> void main(){ int m;printf(“Enter a number: ” );scanf(“%...
C语言用递归函数求一个数的阶乘,不知道错哪里了?
首先,确保在调用递归函数时参数传递正确。在给定的代码中,函数`empty(int n)`被正确地用于求阶乘。函数内部,变量`i`初始化为1,然后递归调用`empty(n-1)`并乘以`n`。这确保了正确计算阶乘。其次,检查边界条件处理是否正确。代码中,当`a`大于1时,调用`b=empty(a);`来计算阶乘。如果输入的`...
c语言 用递归的方法求字符串长度 麻烦帮忙看一下哪里错了 刚开始学 希...
string_length 函数 的 概念不太清楚,而且 if(!string) return 0 与 else return 0 重复了,估计是写错字了,改成这样 if ( string == NULL )return 0; \/\/ 这里实际是参数合法性检测 if ( string[0] == '\\0' ){ return 0; \/\/ 这里是递归终止判断 } else { return str...
...C语言程序哪里错了\/* 编写计算m的n次方的递归函数,并写出主函数进行...
int factor(int n ,int m) { int answer; if(n==0)\/\/<--- return 1; else {answer=factor(n-1,m)*m; return answer; } }int main(int argc, char *argv[]) { int factor(int n,int m); int n,m; scanf("%d%d",&n,&m); printf("%d",factor(n,m)); ...
c语言函数递归求阶乘的问题 求助大佬们
两个比较常见的错误 a)递归没有结束条件,要判断 num==0情况直接返回1,否则就是死循环 b) 返回类型是long int但是中间类型都是int,这是非常大的错误。int类型只能保存大概12!这样的数,此时返回long int毫无意义。所有的类型都应该换为long,否则能算的阶乘太小了 ...
c语言 求 阶乘 n!\/m!(n-m)! 用递归函数求,帮我看看哪错了?
scanf少个%d吧 不需要这么多函数。。。直接一个求阶乘的就行。include <stdio.h> int fun(int a){ int f;if (a==1||a==0)f=1;else f=a*fun(a-1);return f;} void main(){ int n,m;float x;printf("输入2个数:\\n");scanf("%d%d",&n,%m);x=fun(n)\/fun(m)*fun(n...
C语言汉诺塔递归算法,图片中框框中加上之后为甚么会出现错误呢
加上if下面就两行了 需要加大括号的 if(n==1) { printf("1=%c,2=%c,3=%c\\n",a,b,c); printf("===1#%c->%c\\n",a,c); \/\/当n只有1个的时候直接从a移动到c }不加 if就只管一行 下面的else就成了孤魂野鬼了 ...
C语言用递归函数求一个数的阶乘,不知道错哪里了?
{ int i=1;\/\/令i=1就行了 if(n!=1){ i=empty(n-1)*n;} return i;} void main(){ int a,b;printf("请输入一个整数:");scanf("%d",&a);if(a>1){ b=empty(a);} else { if(a==0||a==1){ b=1;} else printf("对不起输入不合法!\\n");} printf("%d的阶乘为...
为什么“C语言既可以嵌套定义又可以递归调用”是错的?
C语言可以递归调用,但是(函数)不能嵌套定义。例如:int fact(int n){ if (n == 0) return 1; else return n * fact(n - 1);}图中的递归调用是允许的。而:void foo(){ void bar() { \/\/ Some code }}这样在函数内定义函数是不允许的。不过结构体是可以嵌...