#include int fun(int*x,int n) { if (n==0) return x[0]; else
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/08 11:38:34
#include int fun(int*x,int n) { if (n==0) return x[0]; else return x[0]+fun(x+1,n-1); }
void main()
{
int a[]={1,2,3,4,5,6,7};
printf("%d\n",fun(a,2) );
}
void main()
{
int a[]={1,2,3,4,5,6,7};
printf("%d\n",fun(a,2) );
}
#include
int fun(int*x,int n)
{
if (n==0)
return x[0];
else
return x[0]+fun(x+1,n-1);
}
如果n = 0,那么返回 数组 x的第一个元素,如果 n !=0 那么后面将会是一个递归算法.
请把代码贴完,还有你想说明的是什么?想问什么?
再问: 这题怎么求解,能把整个过程写一下吗?递归算法,最后一步n==0时,返回值 x[0]的值是多少啊?
再答: 首先将数组 a 和 2 传入 fun() 将数组 a 的首地址赋给 指针x n 不等于0 所以 fun 返回 x[0]+fun(x+1, n-1) x[0]就是数组的第一个元素,即为:1 1+fun(x+1, n-1), 我们设此时的fun(x+1, n-1)值为 K; 现在我们需要计算 k 这里是第二次调用 fun函数,而且是在 fun函数自己里面调用的,这就叫递归。 因为将数组 a 的首地址赋给 指针x,所以 x+1指的就是数组中的第二个元素即 a[1],值为2,而此时的a[1]赋给指针x,那么a[1]相当于fun()参数x的x[0],这个问题一定要明白。 现在看 n-1 任然不为0 所以 返回x[0]+fun(x+1, n-1),我们设此时的fun(x+1, n-1)值为 j;现在我们计算j 这个时候传进来的数组起始地址是a[1],所以相对于传进来的参数而言,此时的x[0]相当于数组的a[1]。 所以返回为2+ fun(x+1,n-1) 我们发现这个时候 n-1等于0 了 返回x[0],而此时的 x[0]相当于 a数组中的 a[2]; 即j的值为3 现在回到第一步我们得到的是 1+k 而k=2+j 我们得到的j=3 那么: 1+ 2 +3 =6。就是我们最后的结果了。
int fun(int*x,int n)
{
if (n==0)
return x[0];
else
return x[0]+fun(x+1,n-1);
}
如果n = 0,那么返回 数组 x的第一个元素,如果 n !=0 那么后面将会是一个递归算法.
请把代码贴完,还有你想说明的是什么?想问什么?
再问: 这题怎么求解,能把整个过程写一下吗?递归算法,最后一步n==0时,返回值 x[0]的值是多少啊?
再答: 首先将数组 a 和 2 传入 fun() 将数组 a 的首地址赋给 指针x n 不等于0 所以 fun 返回 x[0]+fun(x+1, n-1) x[0]就是数组的第一个元素,即为:1 1+fun(x+1, n-1), 我们设此时的fun(x+1, n-1)值为 K; 现在我们需要计算 k 这里是第二次调用 fun函数,而且是在 fun函数自己里面调用的,这就叫递归。 因为将数组 a 的首地址赋给 指针x,所以 x+1指的就是数组中的第二个元素即 a[1],值为2,而此时的a[1]赋给指针x,那么a[1]相当于fun()参数x的x[0],这个问题一定要明白。 现在看 n-1 任然不为0 所以 返回x[0]+fun(x+1, n-1),我们设此时的fun(x+1, n-1)值为 j;现在我们计算j 这个时候传进来的数组起始地址是a[1],所以相对于传进来的参数而言,此时的x[0]相当于数组的a[1]。 所以返回为2+ fun(x+1,n-1) 我们发现这个时候 n-1等于0 了 返回x[0],而此时的 x[0]相当于 a数组中的 a[2]; 即j的值为3 现在回到第一步我们得到的是 1+k 而k=2+j 我们得到的j=3 那么: 1+ 2 +3 =6。就是我们最后的结果了。
#include int fun(int*x,int n) { if (n==0) return x[0]; else
int fun(static int n) {if(n==1)return 1; else return(n+fun(n
#include long fun(int n) {if(n>1) return (n*fun(n-1)); else
int fac(int n) {if(n==0||n==1) return 1; else return n*fac(n
#include #include #include int fun(float x[],int n) /f
double fact(int n) { if (n==0) return 1; else return n*(fact
#include int ant(int n){ if (n>15) return (1,2); else return
return的意思?#include int f(int i){printf("i=%d\n",i);return 0;
int f(int m,int n) { if(m < n) return 0; if(n==0) return 1;
一道C语言题,# include int fun (int n,int *s){int f1,f2;if (n==1||
#include int fun(int b[].int n) { int i.r=1:for(i=0:i
int max(int x,int y) { int z; if(x>y) z=x; else z=y; return(