帮看一下这个程序题,看看我的思路错在哪里?多谢@!

作者&投稿:泊爱 (若有异议请与网页底部的电邮联系)
这道题目我的思路错在哪里~

你没错,正确答案错
我初三,还有可能错吗

1.甲的站法A(1,5)之后乙的站法不再是A(1,5),应该根据情况分类:甲站最后一个和甲站在中间4个位置;
2.除数不能为0,请问为何有6个商是0

我第一次看也被你看蒙了,但是仔细一看才知道....
太恍惚人了...
对于数组作为参数,传参可以是指针,但是在函数内的形参不是常指针,而是普通的指针,所以你在递归的时候,每次传进来的参数除了第一次意外,其他的都不是常指针,而只是a数组元素的地址
简单的说,就是你在递归的时候,第一个实参不是都是数组的第一位,第一次是a的地址,但是第二次就是a+1,那么
int fun(int *x,int n)
{
if(n==0) return x[0];
else return x[0]+fun(x+1,n-1);//这里就是*(a+1)+fun(a+2,2)=2+fun(a+2,2)
}

fun(a,3) = a[0]+ fun(a+1,2)
fun(a+1,2)= (a+1)[0] + fun(a+2,1)
fun(a+2,1)= (a+2)[0]+ fun(a+3,0)
fun(a+3,0)= (a+3)[0]
所以fun(a,3)=a[0]+(a+1)[0]+(a+2)[0]+(a+3)[0]=a[0]+a[1]+a[2]+a[3]=10

递归时x[0]未必就是原数组的x[0],因为这时参数x变成了x+1,等于是:
返回 x[0] + fun(x[1], 2)
fun(x[1],2)=x[1]+fun(x[2],1)
fun(x[2],1)=x[2]+fun(x[3],0)
fun(x[3],0)=4
以上x[n]是主函数中的数组成员


请各位大神帮我看一下这个C程序题,如何才能解决这个问题。
首先我修改后的代码能使得as和q的输出满足你的要求,根据我手算出来As=1503.3984,保留三位得出的结果是1503.398而不是你给出结果1503(不带小数)。我要说明下原理:在一个表达式中参与运算时,往往会把结果转换成更高级的类型(保存数值范围更大的类型)。例如: char a = 5;int b = 1024;int...

帮看一下这个程序题,看看我的思路错在哪里?多谢@!
int fun(int *x,int n){ if(n==0) return x[0];else return x[0]+fun(x+1,n-1);\/\/这里就是*(a+1)+fun(a+2,2)=2+fun(a+2,2)}

帮忙解下这道程序题,谢谢了
第一题: 因为主函数里的m=3 所以for ( i=0; i<m; i++) 这条语句能执行3次,即i=0,1,2的时候。当i=0时,调用F(I)函数(即n=0),因为i的初值是1所以i>n,不满足i<=n。所以程序返回s的初始值1,回到主函数执行a+=f(i); 此时a=1,当i=1时,调用F(I)函数(即n=1),因...

看下这个c++的程序题目,哪儿错 了呢,帮忙找下错误
= -1) { cin >> product >> value;\/\/产品 价值 sales[salesPerson][product] =value; \/\/sales[][]应该放这里 cin >> salesPerson;\/\/售货员 \/\/sales[][]语句放错了位置,导致所有数据的位置不对 \/\/原代码 sales[salesPerson][product] =value; } cout<< "are d...

帮忙看一下这个程序问题出在哪儿
写的是冒泡排序吧。include<stdio.h> main(){ int i=0,d=1,t=0;int a[10]={4,7,3,7,5,8,3,8,4,2};while(i<9){ while(d<10){ if(a[d]>a[d+1])\/\/按d=1来,这里应当换成:a[d-1]>a[d];{ t=a[d+1];\/\/t=a[d];a[d+1]=a[d];\/\/a[d]=a[d-1];a[...

哪位大神帮忙看下这个程序题目,我写了好多次了,都没有正确
= '.' && (isspace(p[i]) || ispunct(p[i]))){return FALSE;}}return TRUE;}int ValidateIp(struct IP ip){return ip.a >= 0 && ip.a <= 255 && ip.b >= 0 && ip.b <= 255 && ip.c >= 0 && ip.c <= 255 && ip.d >= 0 && ip.d <= 255;}int main(void){...

c语言问题 看一下这个程序
b[x] = 1;将它设置为1.你看看,当进行第6次循环的时候,数组b[]的33个元素只剩下3个为0了,而 for (i=0; i<6; ++i)需要运行while (b[x=rand()%33+1]);语句6次。最终,因为数组b[]里没有0元素,这个语句无限循环了下去。每次你都需要清空b[],并且,这个程序用来选号,还会出现...

一个很简单的c语言程序题,帮忙看一下
1、错的很荒唐。把结尾的“)”改为“}”!应该明白什么意思吧?main(){char str[][10]={"China","Beijing"},*p=str;printf("%s\\n",p+10);}\/*就是这里,main()函数的结束符*\/ 2、你这个程序思路是正确的。p指向str第一个字符串的首地址,如果读取p的值,它会顺着p指向的地址向下读,...

劳烦Java大神帮我看一下这个程序题目。万分感谢
public static int gys(int a, int b, int c){ int min = a;if(min > b){ min = b;} if(min > c){ min = c;} for(int i=min; i>=1; i--){ if(a%i==0 && b%i==0 && c%i==0){ return i;} } return min;} ...

有一个程序题,求C++高手帮忙看看
public:virtual double area() = 0;};double whole(Shape *s[], int n) { double sum=0.0;for (int i=0;i<n;i++)sum += s[i]->area();return sum;} class Rectangle : public Shape { public:double length;double width;Rectangle(double len, double wid) { length=len;width=...

金州区18982362332: 帮看一下这个程序题,看看我的思路错在哪里?多谢@! -
卓袁欣舒: 我第一次看也被你看蒙了,但是仔细一看才知道....太恍惚人了...对于数组作为参数,传参可以是指针,但是在函数内的形参不是常指针,而是普通的指针,所以你在递归的时候,每次传进来的参数除了第一次意外,其他的都不是常指针,而只是a数组元素的地址 简单的说,就是你在递归的时候,第一个实参不是都是数组的第一位,第一次是a的地址,但是第二次就是a+1,那么int fun(int *x,int n){if(n==0) return x[0]; else return x[0]+fun(x+1,n-1);//这里就是*(a+1)+fun(a+2,2)=2+fun(a+2,2)}

金州区18982362332: 各位我做了这么个C++的程序题!!帮忙看看错在哪了!!!! -
卓袁欣舒: 你定义了int disc 后 ,根本就没有对它有任何操作,disc里面的数根本就是个未知数嘛,然后下面你对disc的值做的各种判断当然也没什么用了. scanf("%f%f%f",&a,&b,&c);下面加上 disc = b*b - 4*a*c; 试试.

金州区18982362332: 请帮忙看看这个程序哪儿错了? 题目是:用javascript递归方法实现n的阶乘,即在文本框中输入数再输出结果 -
卓袁欣舒: <body><br> <input type="text" id="n"/><br> <input type="button" value="确定" onclick="var number = Number(document.getElementById('n').value);alert(isNaN(number)? 0 : getFactorial(number));"/><br> </body>function getFactorial(...

金州区18982362332: 菜鸟求助,一道C语言的题,麻烦大家帮我看看哪儿错了..... -
卓袁欣舒: #include int main(){ char ch,a[1000]; int i=0,k; FILE*in,*out; in=fopen("copy.in","r"); if (NULL == in) { ...

金州区18982362332: 我这个程序错在哪里帮忙看看 -
卓袁欣舒: 你的逻辑思路有问题在1-1000的区间中找符合某个条件的几个数,怎么会有两层循环?明显应该是一个循环中找几次才对,看下面的程序#include <stdio.h>int main(void) { int a,b=0,c=0; for(a=1;a<=1000;a++) if(a%6==0&&a%8==0) { b++; c=c+a; if(b==10) break; } printf("前十项和=%d,第十项=%d",c,a); getch(); return 0; }

金州区18982362332: 本人新手,求帮我看看这个程序哪里错了,是要判断整数的位数.不懂如何调用程序. -
卓袁欣舒: 你好!!程序注释了一下,你看看吧运行的结果 程序有一个问题,函数没有赋值:double c=a; // 这里忘记...

金州区18982362332: 一个简单C语言程序问题!求帮忙看看哪里错了? -
卓袁欣舒: 不确定问题在那里,建议你把错误描述一下推测是在 scanf ("%1f%1f%1f" , 改成 scanf ("%1f,%1f,%1f" , 再试试输...

金州区18982362332: C语言入门级新手 请帮忙看看这题的代码错在哪里? -
卓袁欣舒: #include /* 行末的分号不要 */ while((a=getchar())!=EOF) /* =!改为 != */

金州区18982362332: 大神帮看看这个程序哪里错了,这是个改错题 -
卓袁欣舒: while((ch=getch(r') ,注意运算符优先级...

金州区18982362332: 很简单的一个ACM题,帮忙看下思路哪儿错了,谢谢
卓袁欣舒: #include &lt;stdio.h&gt; int main(){ int n,i; __int64 f[100]; f[0]=f[1]=1; for (i=2;i&lt;=90;i++) f[i]=f[i-1]+f[i-2]; while (scanf("%d",&amp;n)&amp;&amp;n) printf("%I64d\n",f[n]); return 0; } 加油哈~

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网