fork download
  1. #define NDEBUG
  2. #include <assert.h>
  3. #include <stdio.h>
  4.  
  5. int getDigit(int value, unsigned positionFromLeft) {
  6. assert(positionFromLeft > 0);
  7. if (positionFromLeft == 1) return abs(value) % 10;
  8. if (value == 0) return 0; // optimization: break out of recursion if 0 is reached
  9. return getDigit(value / 10, positionFromLeft - 1);
  10. }
  11.  
  12. int main(void) {
  13. int val; unsigned n;
  14. //val = 12345; n = 0; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
  15. val = 12345; n = 1; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
  16. val = 12345; n = 2; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
  17. val = 12345; n = 3; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
  18. val = 12345; n = 4; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
  19. val = 12345; n = 5; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
  20. val = 12345; n = 6; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
  21. //val = -12345; n = 0; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
  22. val = -12345; n = 1; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
  23. val = -12345; n = 2; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
  24. val = -12345; n = 3; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
  25. val = -12345; n = 4; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
  26. val = -12345; n = 5; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
  27. val = -12345; n = 6; printf("getDigit(%d, %d) is %d\n", val, n, getDigit(val, n));
  28. return 0;
  29. }
  30.  
Success #stdin #stdout 0s 4324KB
stdin
Standard input is empty
stdout
getDigit(12345, 1) is 5
getDigit(12345, 2) is 4
getDigit(12345, 3) is 3
getDigit(12345, 4) is 2
getDigit(12345, 5) is 1
getDigit(12345, 6) is 0
getDigit(-12345, 1) is 5
getDigit(-12345, 2) is 4
getDigit(-12345, 3) is 3
getDigit(-12345, 4) is 2
getDigit(-12345, 5) is 1
getDigit(-12345, 6) is 0