我被要求编写一个递归代码来打印数组。一位朋友给我看了这段代码:
include <stdio.h>
int i=0;
void print(int A[], int n)
{
if(i<n)
{
printf("%d ", A[i]);
i++;
print(A, n);
}
}
int main()
{
int A[3]={3, 5, 2};
print(A, 3);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
从技术上讲,它是递归的,因为函数调用自身,但我认为微不足道!它不会将问题分解为更小的问题或类似的问题。所以,感觉就像是作弊。假装好像是递归。
这段代码中的函数可以被认为是递归的吗?这是使用递归的好方法吗?
这种形式怎么样:
#include <stdio.h>
void print(int A[], int n, int i)
{
if(i<n)
{
printf("%d ", A[i]);
print(A, n, i+1);
}
}
int main()
{
int A[3]={3, 5, 2}, i=0;
print(A, 3, i);
return 0;
}
Run Code Online (Sandbox Code Playgroud) Python提供了重载==运算符AND !=运算符的功能.但为什么?是不是足够重载==并!=自动相反(实际值)==?
一个人的结果不应该自动暗示对方吗?
我最近了解到printf()返回它要调用的字符数.但我想知道我之前从未"使用过"这个返回值,例如:
int c = printf("Called func\n");
Run Code Online (Sandbox Code Playgroud)
要么
printf("%d", printf("Called func\n"));
Run Code Online (Sandbox Code Playgroud)
我只是写了一些语句,其中执行了printf的功能,如:
printf("Called func\n");
Run Code Online (Sandbox Code Playgroud)
那么printf()的返回值"发生了什么"?编译器如何知道它"ok"不使用返回的整数?
我试图解决这个特殊问题:项目欧拉#16:
2 ^ 15 = 32768,其数字之和为3 + 2 + 7 + 6 + 8 = 26.
数字2 ^ 1000的数字之和是多少?
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int num;
cin >> num;
long double n = pow(2, num);
cout << fixed << n << endl;
int sum = 0;
while(n != 0.0)
{
sum = sum + fmod(n, 10);
n = floor(n/10);
}
cout << sum << endl;
}
Run Code Online (Sandbox Code Playgroud)
用户输入为1000时的输出为:
Run Code Online (Sandbox Code Playgroud)1181
然而,互联网提到了正确的答案,1366而不是1181我得到的.